././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/CHANGELOG.md0000644000000000000000000004563014657064216012042 0ustar00# Change Log ## [0.13.2] - 2024-08-14 ### Fixed - Fix deleting keys from an out-of-order table does not remove all table parts. ([#379](https://github.com/python-poetry/tomlkit/issues/379)) ## [0.13.1] - 2024-08-14 ### Fixed - Fix the `Table.is_super_table()` check for tables with dotted key as the only child. ([#374](https://github.com/python-poetry/tomlkit/issues/374)) - Count table as a super table if it has children and all children are either tables or arrays of tables. ([#377](https://github.com/python-poetry/tomlkit/issues/377)) ## [0.13.0] - 2024-07-10 ### Changed - Expect a tomlkit-specific error instead of `TypeError` from a custom encoder. ([#355](https://github.com/python-poetry/tomlkit/issues/355)) - Drop support for Python older than 3.8. Remove 3.7 from the CI matrix. ### Fixed - Fix the incompatiblity with 3.13 because of the `datetime.replace()` change. ([#333](https://github.com/python-poetry/tomlkit/issues/333)) - Revert the change of parsing out-of-order tables. ([#347](https://github.com/python-poetry/tomlkit/issues/347)) - Keep the nested out-of-order table. ([#361](https://github.com/python-poetry/tomlkit/issues/361)) ## [0.12.5] - 2024-05-08 ### Fixed - Remove the extra minus sign added to the float value after calculation. ([#341](https://github.com/python-poetry/tomlkit/issues/341)) - Fix unexpected newline added after accessing the out-of-order table. ([#343](https://github.com/python-poetry/tomlkit/issues/343)) ## [0.12.4] - 2024-02-27 ### Fixed - Support `|` and `|=` operator for tables, and support `+` and `+=` operator for arrays. ([#331](https://github.com/sdispater/tomlkit/issues/331)) - Fix an index error when setting dotted keys in a table. ([#332](https://github.com/sdispater/tomlkit/issues/332)) ## [0.12.3] - 2023-11-15 ### Fixed - Improve the performance when parsing a table with nested dotted keys. ([#193](https://github.com/sdispater/tomlkit/issues/193)) - Keep the newlines when replacing a table. ([#323](https://github.com/sdispater/tomlkit/issues/323)) ## [0.12.2] - 2023-11-02 ### Fixed - Fixed a bug that overwriting a sub table with a plain value raises an error. ([#313](https://github.com/sdispater/tomlkit/issues/313)) - Correct the return type of integer division. ([#312](https://github.com/sdispater/tomlkit/issues/312)) ## [0.12.1] - 2023-07-27 ### Fixed - Make float and int hashable. ## [0.12.0] - 2023-07-27 ### Added - Allow users to specify encoders for custom types. ([#296](https://github.com/sdispater/tomlkit/issues/296)) ### Fixed - Fix the incorrect sort when building a table with dotted keys. - Complete the methods required for integer and float items. ([#307](https://github.com/sdispater/tomlkit/issues/307)) - Replace the deprecated usage of `datetime.utcnow()`. ([#308](https://github.com/sdispater/tomlkit/issues/308)) - Minor performance improvements when iterating over the escape sequences. ([#304](https://github.com/sdispater/tomlkit/issues/304)) ## [0.11.8] - 2023-04-27 ### Fixed - Remove the extra indentations added when parsing nested sub-tables. ([#256](https://github.com/sdispater/tomlkit/issues/256)) - Ignore the CRLF immediately following a multiple basic string opening. ([#262](https://github.com/sdispater/tomlkit/issues/262)) - Stringifying subtables and nested tables in arrays of tables. ([#283](https://github.com/sdispater/tomlkit/issues/283)) - Messed table structure when building a table with dotted keys. ([#284](https://github.com/sdispater/tomlkit/issues/284)) ## [0.11.7] - 2023-03-27 ### Fixed - Parse empty table name if it is quoted. ([#258](https://github.com/sdispater/tomlkit/issues/258)) - Fix a bug that remove last element of an Inline Table leaves a comma. ([#259](https://github.com/sdispater/tomlkit/issues/259)) - Parse datetime when it is followed by a space. ([#260](https://github.com/sdispater/tomlkit/issues/260)) - Fix the `unwrap()` method for `Container` children values which sometimes returns an internal object if the table is an out-of-order table. ([#264](https://github.com/sdispater/tomlkit/issues/264)) - Fix the wrong return type when doing arithmetic operations between integers and floats. ([#270](https://github.com/sdispater/tomlkit/issues/270)) ## [0.11.6] - 2022-10-27 ### Fixed - Allow broader type for toml file path value ([#243](https://github.com/sdispater/tomlkit/issues/243)) - Auto-determine if a table is a super table if not specified explicitly. ([#245](https://github.com/sdispater/tomlkit/issues/245)) ## [0.11.5] - 2022-09-28 ### Fixed - Fix the type annotation of `unwrap()` and datetime parsing. ([#229](https://github.com/sdispater/tomlkit/issues/229)) - Clear the existing table header when it is adding to another table. ([#230](https://github.com/sdispater/tomlkit/issues/230)) - Fix a bug that escape chars are lost after concat with another string. ([#235](https://github.com/sdispater/tomlkit/issues/235)) - Fix a rendering issue of tables inside arrays or inline tables. ([#236](https://github.com/sdispater/tomlkit/issues/236)) ## [0.11.4] - 2022-08-12 ### Fixed - Fix a memory leak caused by `lru_cache` on methods. ([#227](https://github.com/sdispater/tomlkit/issues/227)) ## [0.11.3] - 2022-08-10 ### Fixed - Fix a regression issue that copying an array results in extra `None` items. ([#221](https://github.com/sdispater/tomlkit/issues/221)) - Fix a regression of `array.add_line` that it incorrectly adds a comma to non-value lines. ([#223](https://github.com/sdispater/tomlkit/issues/223)) ## [0.11.2] - 2022-08-08 ### Fixed - Fix adding float to an integer value. ([#215](https://github.com/sdispater/tomlkit/issues/215)) - Keep the end-of-array style when adding items to or removing items from an array. ([#213](https://github.com/sdispater/tomlkit/issues/213), [#216](https://github.com/sdispater/tomlkit/issues/216)) - Fix a bug of redundant table header shown when removing children from a super table. ([#217](https://github.com/sdispater/tomlkit/issues/219)) ## [0.11.1] - 2022-07-07 ### Changed - Keep consistent line endings when changing files. ([#201](https://github.com/sdispater/tomlkit/issues/201)) - Make `KeyAlreadyPresent` and `InvalidStringError` subclasses of `ParseError`. ([#202](https://github.com/sdispater/tomlkit/issues/202)) - Remove empty table from `OutOfOrderTableProxy` when deleting items. ([#204](https://github.com/sdispater/tomlkit/issues/204)) - Raise errors when trying to access unsupported methods on `OutOfOrderTableProxy`. ([#205](https://github.com/sdispater/tomlkit/issues/205)) ### Fixed - Fix `unwrap()` for String values to remove the quotes. ([#199](https://github.com/sdispater/tomlkit/issues/199)) ## [0.11.0] - 2022-05-24 ### Added - Add `unwrap` methods that return tomlkit objects recursively converted to plain python objects. ([#43](https://github.com/sdispater/tomlkit/issues/43)) ## [0.10.2] - 2022-04-24 ### Fixed - Use the plain python string representation of `Key` in `KeyAlreadyPresent` error message. ([#185](https://github.com/sdispater/tomlkit/issues/185)) - Fix the `astimezone()` and `replace()` methods of datetime objects. ([#188](https://github.com/sdispater/tomlkit/issues/188)) - Add type definitions for `items()` function. ([#190](https://github.com/sdispater/tomlkit/issues/190)) ## [0.10.1] - 2022-03-27 ### Fixed - Preserve the newlines before super tables when rendering. ([#178](https://github.com/sdispater/tomlkit/issues/178)) - Fix the bug that comments are appended with comma when rendering a multiline array. ([#181](https://github.com/sdispater/tomlkit/issues/181)) ## [0.10.0] - 2022-02-18 ### Fixed - Fix the only child detection when creating tables. ([#175](https://github.com/sdispater/tomlkit/issues/175)) - Include the `docs/` directory and `CHANGELOG.md` in sdist tarball. ([#176](https://github.com/sdispater/tomlkit/issues/176)) ### Added - Add keyword arguments to `string` API to allow selecting the representation type. ([#177](https://github.com/sdispater/tomlkit/pull/177)) ## [0.9.2] - 2022-02-08 ### Changed - When a table's only child is a table or array of table, it is created as a super table. ([#175](https://github.com/sdispater/tomlkit/issues/175)) ## [0.9.1] - 2022-02-07 ### Fixed - Fix a bug of separators not being kept when replacing the value. ([#170](https://github.com/sdispater/tomlkit/issues/170)) - Tuples should be dumped as TOML arrays. ([#171](https://github.com/sdispater/tomlkit/issues/171)) ## [0.9.0] - 2022-02-01 ### Added - Add a new argument to `table` API to allow it to be a super table. ([#159](https://github.com/sdispater/tomlkit/pull/159)) - Support adding item to `Table` and `Container` with dotted key. ([#160](https://github.com/sdispater/tomlkit/pull/160)) ### Fixed - Fix a bug of `value()` API that parses string incompletely. ([#168](https://github.com/sdispater/tomlkit/pull/168)) ## [0.8.0] - 2021-12-20 ### Changed - Drop support for Python<3.6. ([#151](https://github.com/sdispater/tomlkit/pull/151)) - Comply with TOML v1.0.0. ([#154](https://github.com/sdispater/tomlkit/pull/154)) ### Fixed - Support copy protocols for table items. ([#65](https://github.com/sdispater/tomlkit/issues/65)) - Escape characters in double quoted key string. ([#136](https://github.com/sdispater/tomlkit/issues/136)) - Fix the invalid dumping output of multiline array when it is empty. ([#139](https://github.com/sdispater/tomlkit/issues/139)) - Fix a bug that tomlkit accepts an invalid table with missing `=`. ([#141](https://github.com/sdispater/tomlkit/issues/141)) - Fix the invalid dumping output when the key is empty. ([#143](https://github.com/sdispater/tomlkit/issues/143)) - Fix incorrect string returned by dumps when moving/renaming table. ([#144](https://github.com/sdispater/tomlkit/issues/144)) - Fix inconsistent dumps when replacing existing item with nested table. ([#145](https://github.com/sdispater/tomlkit/issues/145)) - Fix invalid dumps output when appending to a multiline array. ([#146](https://github.com/sdispater/tomlkit/issues/146)) - Fix the `KeyAlreadyPresent` when the table is separated into multiple parts. ([#148](https://github.com/sdispater/tomlkit/issues/148)) - Preserve the line endings in `TOMLFile`. ([#149](https://github.com/sdispater/tomlkit/issues/149)) ## [0.7.2] - 2021-05-20 ### Fixed - Fixed an error where container's data were lost when copying. ([#126](https://github.com/sdispater/tomlkit/pull/126)) - Fixed missing tests in the source distribution of the package. ([#127](https://github.com/sdispater/tomlkit/pull/127)) ## [0.7.1] - 2021-05-19 ### Fixed - Fixed an error with indent for nested table elements when updating. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed various issues with dict behavior compliance for containers. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed an internal error when empty tables were present after existing ones. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed table representation for dotted keys. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed an error in top level keys handling when building documents programmatically. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed compliance with mypy by adding a `py.typed` file. ([#109](https://github.com/sdispater/tomlkit/pull/109)) ## [0.7.0] - 2020-07-31 ### Added - Added support for sorting keys when dumping raw dictionaries by passing `sort_keys=True` to `dumps()` ([#103](https://github.com/sdispater/tomlkit/pull/103)). ### Changed - Keys are not longer sorted by default when dumping a raw dictionary but the original order will be preserved ([#103](https://github.com/sdispater/tomlkit/pull/103)). ### Fixed - Fixed compliance with the 1.0.0rc1 TOML specification ([#102](https://github.com/sdispater/tomlkit/pull/102)). ## [0.6.0] - 2020-04-15 ### Added - Added support for heterogeneous arrays ([#92](https://github.com/sdispater/tomlkit/pull/92)). ## [0.5.11] - 2020-02-29 ### Fixed - Fix containers and our of order tables dictionary behavior ([#82](https://github.com/sdispater/tomlkit/pull/82))) ## [0.5.10] - 2020-02-28 ### Fixed - Fixed out of order tables not behaving properly ([#79](https://github.com/sdispater/tomlkit/pull/79)) ## [0.5.9] - 2020-02-28 ### Fixed - Fixed the behavior for out of order tables ([#68](https://github.com/sdispater/tomlkit/pull/68)). - Fixed parsing errors when single quotes are present in a table name ([#71](https://github.com/sdispater/tomlkit/pull/71)). - Fixed parsing errors when parsing some table names ([#76](https://github.com/sdispater/tomlkit/pull/76)). ## [0.5.8] - 2019-10-11 ### Added - Added support for producing multiline arrays ## [0.5.7] - 2019-10-04 ### Fixed - Fixed handling of inline tables. ## [0.5.6] - 2019-10-04 ### Fixed - Fixed boolean comparison. - Fixed appending inline tables to tables. ## [0.5.5] - 2019-07-01 ### Fixed - Fixed display of inline tables after element deletion. ## [0.5.4] - 2019-06-30 ### Fixed - Fixed the handling of inline tables. - Fixed date, datetime and time handling on Python 3.8. - Fixed behavior for sub table declaration with intermediate tables. - Fixed behavior of `setdefault()` on containers (Thanks to [@AndyKluger](https://github.com/AndyKluger)). - Fixed tables string representation. ## [0.5.3] - 2018-11-19 ### Fixed - Fixed copy of TOML documents. - Fixed behavior on PyPy3. ## [0.5.2] - 2018-11-09 ### Fixed - Fixed table header missing when replacing a super table's sub table with a single item. - Fixed comments being displayed in inline tables. - Fixed string with non-scalar unicode code points not raising an error. ## [0.5.1] - 2018-11-08 ### Fixed - Fixed deletion and replacement of sub tables declared after other tables. ## [0.5.0] - 2018-11-06 ### Changed - Improved distinction between date(time)s and numbers. ### Fixed - Fixed comma handling when parsing arrays. (Thanks to [@njalerikson](https://github.com/njalerikson)) - Fixed comma handling when parsing inline tables. (Thanks to [@njalerikson](https://github.com/njalerikson)) - Fixed a `KeyAlreadyPresent` error when declaring a sub table after other tables. ## [0.4.6] - 2018-10-16 ### Fixed - Fixed string parsing behavior. ## [0.4.5] - 2018-10-12 ### Fixed - Fixed trailing commas not raising an error for key/value. - Fixed key comparison. - Fixed an error when using pickle on TOML documents. ## [0.4.4] - 2018-09-01 ### Fixed - Fixed performances issues while parsing on Python 2.7. ## [0.4.3] - 2018-08-28 ### Fixed - Fixed handling of characters that need escaping when inserting/modifying a string element. - Fixed missing newline after table header. - Fixed dict-like behavior for tables and documents. ## [0.4.2] - 2018-08-06 ### Fixed - Fixed insertion of an element after deletion. ## [0.4.1] - 2018-08-06 ### Fixed - Fixed adding an element after another element without a new line. - Fixed parsing of dotted keys inside tables. - Fixed parsing of array of tables with same prefix. ## [0.4.0] - 2018-07-23 ### Added - `dumps()` now also accepts a raw dictionary. ### Changed - `add()`/`append()`/`remove()` now return the current `Container`/`Table` to provide a fluent interface. - Most items not behave like their native counterparts. ### Fixed - Fixed potential new lines inside an inline table. ## [0.3.0] - 2018-07-20 ### Changed - Make new dicts automatically sorted when dumped. - Improved new elements placement when building. - Automatically convert lists of dicts to arrays of tables. - No longer add a new line before standalone tables. - Make arrays behave (mostly) like lists. ### Fixed - Fixed string parsing when before last char is a backslash character. - Fixed handling of array of tables after sub tables. - Fixed table display order. - Fixed handling of super tables with different sections. - Fixed raw strings escaping. [unreleased]: https://github.com/sdispater/tomlkit/compare/0.13.2...master [0.13.2]: https://github.com/sdispater/tomlkit/releases/tag/0.13.2 [0.13.1]: https://github.com/sdispater/tomlkit/releases/tag/0.13.1 [0.13.0]: https://github.com/sdispater/tomlkit/releases/tag/0.13.0 [0.12.5]: https://github.com/sdispater/tomlkit/releases/tag/0.12.5 [0.12.4]: https://github.com/sdispater/tomlkit/releases/tag/0.12.4 [0.12.3]: https://github.com/sdispater/tomlkit/releases/tag/0.12.3 [0.12.2]: https://github.com/sdispater/tomlkit/releases/tag/0.12.2 [0.12.1]: https://github.com/sdispater/tomlkit/releases/tag/0.12.1 [0.12.0]: https://github.com/sdispater/tomlkit/releases/tag/0.12.0 [0.11.8]: https://github.com/sdispater/tomlkit/releases/tag/0.11.8 [0.11.7]: https://github.com/sdispater/tomlkit/releases/tag/0.11.7 [0.11.6]: https://github.com/sdispater/tomlkit/releases/tag/0.11.6 [0.11.5]: https://github.com/sdispater/tomlkit/releases/tag/0.11.5 [0.11.4]: https://github.com/sdispater/tomlkit/releases/tag/0.11.4 [0.11.3]: https://github.com/sdispater/tomlkit/releases/tag/0.11.3 [0.11.2]: https://github.com/sdispater/tomlkit/releases/tag/0.11.2 [0.11.1]: https://github.com/sdispater/tomlkit/releases/tag/0.11.1 [0.11.0]: https://github.com/sdispater/tomlkit/releases/tag/0.11.0 [0.10.2]: https://github.com/sdispater/tomlkit/releases/tag/0.10.2 [0.10.1]: https://github.com/sdispater/tomlkit/releases/tag/0.10.1 [0.10.0]: https://github.com/sdispater/tomlkit/releases/tag/0.10.0 [0.9.2]: https://github.com/sdispater/tomlkit/releases/tag/0.9.2 [0.9.1]: https://github.com/sdispater/tomlkit/releases/tag/0.9.1 [0.9.0]: https://github.com/sdispater/tomlkit/releases/tag/0.9.0 [0.8.0]: https://github.com/sdispater/tomlkit/releases/tag/0.8.0 [0.7.2]: https://github.com/sdispater/tomlkit/releases/tag/0.7.2 [0.7.1]: https://github.com/sdispater/tomlkit/releases/tag/0.7.1 [0.7.0]: https://github.com/sdispater/tomlkit/releases/tag/0.7.0 [0.6.0]: https://github.com/sdispater/tomlkit/releases/tag/0.6.0 [0.5.11]: https://github.com/sdispater/tomlkit/releases/tag/0.5.11 [0.5.10]: https://github.com/sdispater/tomlkit/releases/tag/0.5.10 [0.5.9]: https://github.com/sdispater/tomlkit/releases/tag/0.5.9 [0.5.8]: https://github.com/sdispater/tomlkit/releases/tag/0.5.8 [0.5.7]: https://github.com/sdispater/tomlkit/releases/tag/0.5.7 [0.5.6]: https://github.com/sdispater/tomlkit/releases/tag/0.5.6 [0.5.5]: https://github.com/sdispater/tomlkit/releases/tag/0.5.5 [0.5.4]: https://github.com/sdispater/tomlkit/releases/tag/0.5.4 [0.5.3]: https://github.com/sdispater/tomlkit/releases/tag/0.5.3 [0.5.2]: https://github.com/sdispater/tomlkit/releases/tag/0.5.2 [0.5.1]: https://github.com/sdispater/tomlkit/releases/tag/0.5.1 [0.5.0]: https://github.com/sdispater/tomlkit/releases/tag/0.5.0 [0.4.6]: https://github.com/sdispater/tomlkit/releases/tag/0.4.6 [0.4.5]: https://github.com/sdispater/tomlkit/releases/tag/0.4.5 [0.4.4]: https://github.com/sdispater/tomlkit/releases/tag/0.4.4 [0.4.3]: https://github.com/sdispater/tomlkit/releases/tag/0.4.3 [0.4.2]: https://github.com/sdispater/tomlkit/releases/tag/0.4.2 [0.4.1]: https://github.com/sdispater/tomlkit/releases/tag/0.4.1 [0.4.0]: https://github.com/sdispater/tomlkit/releases/tag/0.4.0 [0.3.0]: https://github.com/sdispater/tomlkit/releases/tag/0.3.0 [0.2.0]: https://github.com/sdispater/tomlkit/releases/tag/0.2.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/LICENSE0000644000000000000000000000204614657064216011230 0ustar00Copyright (c) 2018 Sébastien Eustace Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/README.md0000644000000000000000000000366714657064216011514 0ustar00[github_release]: https://img.shields.io/github/release/sdispater/tomlkit.svg?logo=github&logoColor=white [pypi_version]: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white [python_versions]: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white [github_license]: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white [github_action]: https://github.com/sdispater/tomlkit/actions/workflows/tests.yml/badge.svg [![GitHub Release][github_release]](https://github.com/sdispater/tomlkit/releases/) [![PyPI Version][pypi_version]](https://pypi.org/project/tomlkit/) [![Python Versions][python_versions]](https://pypi.org/project/tomlkit/) [![License][github_license]](https://github.com/sdispater/tomlkit/blob/master/LICENSE)
[![Tests][github_action]](https://github.com/sdispater/tomlkit/actions/workflows/tests.yml) # TOML Kit - Style-preserving TOML library for Python TOML Kit is a **1.0.0-compliant** [TOML](https://toml.io/) library. It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes them accessible and editable via an intuitive API. You can also create new TOML documents from scratch using the provided helpers. Part of the implementation has been adapted, improved and fixed from [Molten](https://github.com/LeopoldArkham/Molten). ## Usage See the [documentation](https://tomlkit.readthedocs.io/) for more information. ## Installation If you are using [Poetry](https://poetry.eustace.io), add `tomlkit` to your `pyproject.toml` file by using: ```bash poetry add tomlkit ``` If not, you can use `pip`: ```bash pip install tomlkit ``` ## Running tests Please clone the repo with submodules with the following command `git clone --recurse-submodules https://github.com/sdispater/tomlkit.git`. We need the submodule - `toml-test` for running the tests. You can run the tests with `poetry run pytest -q tests` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/docs/Makefile0000644000000000000000000000117214657064216012612 0ustar00# Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/docs/api.rst0000644000000000000000000000111214657064216012447 0ustar00API Reference ============= Public API ---------- Functions you need to create TOML elements to construct a TOML document. .. automodule:: tomlkit :members: :undoc-members: :show-inheritance: TOML Document ------------- .. module:: tomlkit.toml_document .. autoclass:: TOMLDocument :show-inheritance: :inherited-members: TOML File --------- .. module:: tomlkit.toml_file .. autoclass:: TOMLFile :show-inheritance: :members: TOML Items ---------- .. automodule:: tomlkit.items :show-inheritance: :members: :exclude-members: item, AbstractTable ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/docs/conf.py0000644000000000000000000000372514657064216012457 0ustar00# Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # import os import sys sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) from tomlkit import __version__ # -- Project information ----------------------------------------------------- project = "TOML Kit" copyright = "2021, Sébastien Eustace" author = "Sébastien Eustace" # The full version, including alpha/beta/rc tags release = __version__ # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ "sphinx.ext.autodoc", ] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = "furo" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = [] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/docs/index.rst0000644000000000000000000000315614657064216013017 0ustar00.. TOMLKit documentation master file, created by sphinx-quickstart on Fri Dec 24 09:31:46 2021. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. TOML Kit ======== **Style-preserving TOML library for Python** .. image:: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white :target: https://pypi.org/project/tomlkit/ .. image:: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white :target: https://pypi.org/project/tomlkit/ .. image:: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white :target: https://github.com/sdispater/tomlkit/blob/master/LICENSE .. image:: https://img.shields.io/badge/TOML-1.0.0-9c4221 :target: https://toml.io/en/v1.0.0 TOML Kit is a **1.0.0-compliant** `TOML `_ library. It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes them accessible and editable via an intuitive API. You can also create new TOML documents from scratch using the provided helpers. Part of the implementation as been adapted, improved and fixed from `Molten `_. Installation ------------ If you are using `Poetry `_, add ``tomlkit`` to your ``pyproject.toml`` file by using:: poetry add tomlkit If not, you can use ``pip``:: pip install tomlkit Contents -------- .. toctree:: :maxdepth: 2 quickstart api Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/docs/make.bat0000644000000000000000000000144014657064216012555 0ustar00@ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=. set BUILDDIR=_build if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.https://www.sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% :end popd ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/docs/quickstart.rst0000644000000000000000000000554314657064216014104 0ustar00Quickstart ========== Parsing ------- TOML Kit comes with a fast and style-preserving parser to help you access the content of TOML files and strings:: >>> from tomlkit import dumps >>> from tomlkit import parse # you can also use loads >>> content = """[table] ... foo = "bar" # String ... """ >>> doc = parse(content) # doc is a TOMLDocument instance that holds all the information # about the TOML string. # It behaves like a standard dictionary. >>> assert doc["table"]["foo"] == "bar" # The string generated from the document is exactly the same # as the original string >>> assert dumps(doc) == content Modifying --------- TOML Kit provides an intuitive API to modify TOML documents:: >>> from tomlkit import dumps >>> from tomlkit import parse >>> from tomlkit import table >>> doc = parse("""[table] ... foo = "bar" # String ... """) >>> doc["table"]["baz"] = 13 >>> dumps(doc) """[table] foo = "bar" # String baz = 13 """ # Add a new table >>> tab = table() >>> tab.add("array", [1, 2, 3]) >>> doc["table2"] = tab >>> dumps(doc) """[table] foo = "bar" # String baz = 13 [table2] array = [1, 2, 3] """ # Remove the newly added table >>> doc.pop("table2") # del doc["table2] is also possible Writing ------- You can also write a new TOML document from scratch. Let's say we want to create this following document .. code-block:: toml # This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" organization = "GitHub" bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." dob = 1979-05-27T07:32:00Z # First class dates? Why not? [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true It can be created with the following code:: >>> from tomlkit import comment >>> from tomlkit import document >>> from tomlkit import nl >>> from tomlkit import table >>> doc = document() >>> doc.add(comment("This is a TOML document.")) >>> doc.add(nl()) >>> doc.add("title", "TOML Example") # Using doc["title"] = "TOML Example" is also possible >>> owner = table() >>> owner.add("name", "Tom Preston-Werner") >>> owner.add("organization", "GitHub") >>> owner.add("bio", "GitHub Cofounder & CEO\nLikes tater tots and beer.") >>> owner.add("dob", datetime(1979, 5, 27, 7, 32, tzinfo=utc)) >>> owner["dob"].comment("First class dates? Why not?") # Adding the table to the document >>> doc.add("owner", owner) >>> database = table() >>> database["server"] = "192.168.1.1" >>> database["ports"] = [8001, 8001, 8002] >>> database["connection_max"] = 5000 >>> database["enabled"] = True >>> doc["database"] = database ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/docs/requirements.in0000644000000000000000000000001414657064216014217 0ustar00sphinx furo ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/docs/requirements.txt0000644000000000000000000000223714657064216014441 0ustar00# This file was autogenerated by uv via the following command: # uv pip compile docs/requirements.in -o docs/requirements.txt alabaster==0.7.16 # via sphinx babel==2.15.0 # via sphinx beautifulsoup4==4.12.3 # via furo certifi==2024.7.4 # via requests charset-normalizer==3.3.2 # via requests docutils==0.21.2 # via sphinx furo==2024.7.18 # via -r docs/requirements.in idna==3.7 # via requests imagesize==1.4.1 # via sphinx jinja2==3.1.4 # via sphinx markupsafe==2.1.5 # via jinja2 packaging==24.1 # via sphinx pygments==2.18.0 # via # furo # sphinx requests==2.32.3 # via sphinx snowballstemmer==2.2.0 # via sphinx soupsieve==2.5 # via beautifulsoup4 sphinx==7.4.7 # via # -r docs/requirements.in # furo # sphinx-basic-ng sphinx-basic-ng==1.0.0b2 # via furo sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 # via sphinx sphinxcontrib-htmlhelp==2.0.6 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx sphinxcontrib-qthelp==1.0.8 # via sphinx sphinxcontrib-serializinghtml==1.1.10 # via sphinx urllib3==2.2.2 # via requests ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/pyproject.toml0000644000000000000000000000236514657064216013143 0ustar00[tool.poetry] name = "tomlkit" version = "0.13.2" description = "Style preserving TOML library" authors = [ "Sébastien Eustace ", "Frost Ming " ] license = "MIT" readme = "README.md" homepage = "https://github.com/sdispater/tomlkit" repository = "https://github.com/sdispater/tomlkit" include = [ { path = "tomlkit/py.typed" }, { path = "tests", format = "sdist" }, { path = "docs", format = "sdist" }, { path = "CHANGELOG.md", format = "sdist" }, ] [tool.poetry.dependencies] python = ">=3.8" [tool.poetry.dev-dependencies] pytest = "^7.2.0" pytest-cov = "^4.0.0" PyYAML = "^6.0" pre-commit = "^2.20.0" mypy = "^0.990" Sphinx = "^4.3.2" furo = "^2022.9.29" [tool.ruff.lint] extend-select = [ "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "PGH", # pygrep-hooks "RUF", # ruff "W", # pycodestyle "YTT", # flake8-2020 ] extend-ignore = ["B018", "B019", "RUF018"] [tool.ruff.lint.mccabe] max-complexity = 10 [tool.ruff.lint.isort] known-first-party = ["tomlkit"] known-third-party = ["pytest"] force-single-line = true lines-after-imports = 2 lines-between-types = 1 [build-system] requires = ["poetry-core>=1.0.0a9"] build-backend = "poetry.core.masonry.api" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/__init__.py0000644000000000000000000000000014657064216013462 0ustar00././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/conftest.py0000644000000000000000000000561514657064216013571 0ustar00import os import pytest @pytest.fixture def example(): def _example(name): with open( os.path.join(os.path.dirname(__file__), "examples", name + ".toml"), encoding="utf-8", ) as f: return f.read() return _example @pytest.fixture def json_example(): def _example(name): with open( os.path.join(os.path.dirname(__file__), "examples", "json", name + ".json"), encoding="utf-8", ) as f: return f.read() return _example @pytest.fixture def invalid_example(): def _example(name): with open( os.path.join( os.path.dirname(__file__), "examples", "invalid", name + ".toml" ), encoding="utf-8", ) as f: return f.read() return _example TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-test", "tests") IGNORED_TESTS = { "valid": [ "float/inf-and-nan", # Can't compare nan ] } def get_tomltest_cases(): dirs = sorted( f for f in os.listdir(TEST_DIR) if os.path.isdir(os.path.join(TEST_DIR, f)) ) assert dirs == ["invalid", "valid"] rv = {"invalid_encode": {}} for d in dirs: rv[d] = {} ignored = IGNORED_TESTS.get(d, []) for root, _, files in os.walk(os.path.join(TEST_DIR, d)): relpath = os.path.relpath(root, os.path.join(TEST_DIR, d)) if relpath == ".": relpath = "" for f in files: try: bn, ext = f.rsplit(".", 1) except ValueError: bn, ext = f.rsplit("-", 1) key = f"{relpath}/{bn}" if ext == "multi": continue if key in ignored: continue if d == "invalid" and relpath == "encoding": rv["invalid_encode"][bn] = os.path.join(root, f) continue if key not in rv[d]: rv[d][key] = {} with open(os.path.join(root, f), encoding="utf-8") as inp: rv[d][key][ext] = inp.read() return rv def pytest_generate_tests(metafunc): test_list = get_tomltest_cases() if "valid_case" in metafunc.fixturenames: metafunc.parametrize( "valid_case", test_list["valid"].values(), ids=list(test_list["valid"].keys()), ) elif "invalid_decode_case" in metafunc.fixturenames: metafunc.parametrize( "invalid_decode_case", test_list["invalid"].values(), ids=list(test_list["invalid"].keys()), ) elif "invalid_encode_case" in metafunc.fixturenames: metafunc.parametrize( "invalid_encode_case", test_list["invalid_encode"].values(), ids=list(test_list["invalid_encode"].keys()), ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/0.5.0.toml0000644000000000000000000000130214657064216014532 0ustar00date = 1979-05-27 time = 07:32:00 plus-infinity = +inf # infinity sf1 = inf # positive infinity sf2 = +inf # positive infinity sf3 = -inf # negative infinity # not a number sf4 = nan # actual sNaN/qNaN encoding is implementation specific sf5 = +nan # same as `nan` sf6 = -nan # valid, actual encoding is implementation specific # hexadecimal with prefix `0x` hex1 = 0xDEADBEEF hex2 = 0xdeadbeef hex3 = 0xdead_beef # octal with prefix `0o` oct1 = 0o01234567 oct2 = 0o755 # useful for Unix file permissions # binary with prefix `0b` bin1 = 0b11010110 # Dotted keys physical.color = "orange" physical.shape = "round" site."google.com" = true a.b.c = 1 a.b.d = 2 [table] a.b.c = 1 a.b.d = 2 a.c = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/example.toml0000644000000000000000000000154614657064216015537 0ustar00# This is a TOML document. Boom. title = "TOML Example" [owner] name = "Tom Preston-Werner" organization = "GitHub" bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." dob = 1979-05-27T07:32:00Z # First class dates? Why not? [database] server = "192.168.1.1" ports = [8001, 8001, 8002] connection_max = 5000 enabled = true [servers] # You can indent as you please. Tabs or spaces. TOML don't care. [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" country = "中国" # This should be parsed as UTF-8 [clients] data = [["gamma", "delta"], [1, 2]] # just an update to make sure parsers support it # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] # Products [[products]] name = "Hammer" sku = 738594937 [[products]] name = "Nail" sku = 284758393 color = "gray" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/fruit.toml0000644000000000000000000000030214657064216015222 0ustar00[[fruit.blah]] name = "apple" [fruit.blah.physical] color = "red" shape = "round" [[fruit.blah]] name = "banana" [fruit.blah.physical] color = "yellow" shape = "bent" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/hard.toml0000644000000000000000000000257514657064216015025 0ustar00# Test file for TOML # Only this one tries to emulate a TOML file written by a user of the kind of parser writers probably hate # This part you'll really hate [the] test_string = "You'll hate me after this - #" # " Annoying, isn't it? [the.hard] test_array = [ "] ", " # "] # ] There you go, parse this! test_array2 = [ "Test #11 ]proved that", "Experiment #9 was a success" ] # You didn't think it'd as easy as chucking out the last #, did you? another_test_string = " Same thing, but with a string #" harder_test_string = " And when \"'s are in the string, along with # \"" # "and comments are there too" # Things will get harder [the.hard."bit#"] "what?" = "You don't think some user won't do that?" multi_line_array = [ "]", # ] Oh yes I did ] # Each of the following keygroups/key value pairs should produce an error. Uncomment to them to test #[error] if you didn't catch this, your parser is broken #string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this #array = [ # "This might most likely happen in multiline arrays", # Like here, # "or here, # and here" # ] End of array comment, forgot the # #number = 3.14 pi <--again forgot the # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/array_duplicate_comma.toml0000644000000000000000000000002414657064216022044 0ustar00simple = [ 1 ,, 2 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/array_leading_comma.toml0000644000000000000000000000002114657064216021472 0ustar00simple = [ , 1 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/array_no_comma.toml0000644000000000000000000000002114657064216020503 0ustar00simple = [ 1 2 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/array_with_invalid_chars.toml0000644000000000000000000000021514657064216022561 0ustar00array = [ "This might most likely happen in multiline arrays", Like here, "or here, and here" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/inline_table_duplicate_comma.toml0000644000000000000000000000003314657064216023353 0ustar00simple = { a = 1 ,, b = 2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/inline_table_leading_comma.toml0000644000000000000000000000002514657064216023005 0ustar00simple = { , a = 1 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/inline_table_no_comma.toml0000644000000000000000000000003014657064216022012 0ustar00simple = { a = 1 b = 2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/inline_table_trailing_comma.toml0000644000000000000000000000002514657064216023213 0ustar00simple = { a = 1 , } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/invalid_date.toml0000644000000000000000000000002214657064216020141 0ustar00date = 2018-13-33 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/invalid_datetime.toml0000644000000000000000000000003714657064216021026 0ustar00datetime = 2018-13-33T23:12:34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/invalid_number.toml0000644000000000000000000000001714657064216020520 0ustar00number = 34"5" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/invalid_time.toml0000644000000000000000000000002414657064216020164 0ustar00datetime = 26:61:61 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/key_value_with_trailing_chars.toml0000644000000000000000000000024014657064216023610 0ustar00string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/newline_in_singleline_string.toml0000644000000000000000000000003014657064216023443 0ustar00this = "this that more" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/section_with_trailing_characters.toml0000644000000000000000000000007214657064216024312 0ustar00[error] if you didn't catch this, your parser is broken ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/string_slash_whitespace_char.toml0000644000000000000000000000004614657064216023435 0ustar00invalid_escape = """this \ more""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/invalid/trailing_comma.toml0000644000000000000000000000003514657064216020507 0ustar00hello = "world" , # this ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/json/0.5.0.json0000644000000000000000000000124414657064216015506 0ustar00{ "date": "1979-05-27", "time": "07:32:00", "plus-infinity": Infinity, "sf1": Infinity, "sf2": Infinity, "sf3": -Infinity, "sf4": NaN, "sf5": NaN, "sf6": NaN, "hex1": 3735928559, "hex2": 3735928559, "hex3": 3735928559, "oct1": 342391, "oct2": 493, "bin1": 214, "physical": { "color": "orange", "shape": "round" }, "site": { "google.com": true }, "a": { "b": { "c": 1, "d": 2 } }, "table": { "a": { "b": { "c": 1, "d": 2 }, "c": 3 } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/json/pyproject.json0000644000000000000000000000641414657064216017071 0ustar00{ "tool": { "poetry": { "name": "poetry", "version": "0.11.2", "description": "Python dependency management and packaging made easy.", "authors": [ "S\u00e9bastien Eustace " ], "license": "MIT", "readme": "README.md", "homepage": "https://poetry.eustace.io/", "repository": "https://github.com/sdispater/poet", "documentation": "https://poetry.eustace.io/docs", "keywords": [ "packaging", "dependency", "poetry" ], "classifiers": [ "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ], "dependencies": { "python": "~2.7 || ^3.4", "cleo": "^0.6.7", "pytoml": "^0.1.16", "requests": "^2.18", "cachy": "^0.2", "requests-toolbelt": "^0.8.0", "jsonschema": "^2.6", "pyrsistent": "^0.14.2", "pyparsing": "^2.2", "cachecontrol": { "version": "^0.12.4", "extras": [ "filecache" ] }, "pkginfo": "^1.4", "html5lib": "^1.0", "shellingham": "^1.1", "typing": { "version": "^3.6", "python": "~2.7 || ~3.4" }, "pathlib2": { "version": "^2.3", "python": "~2.7 || ~3.4" }, "virtualenv": { "version": "^16.0", "python": "~2.7" } }, "dev-dependencies": { "pytest": "^3.4", "pytest-cov": "^2.5", "mkdocs": "^0.17.3", "pymdown-extensions": "^4.9", "pygments": "^2.2", "pytest-mock": "^1.9", "pygments-github-lexers": "^0.0.5", "black": { "version": "^18.3-alpha.0", "python": "^3.6" }, "pre-commit": "^1.10", "tox": "^3.0" }, "scripts": { "poetry": "poetry.console:main" } }, "black": { "line-length": 88, "py36": true, "include": "\\.pyi?$", "exclude": "/(\n \\.git\n | \\.hg\n | \\.mypy_cache\n | \\.tox\n | \\.venv\n | _build\n | build\n | dist\n | tests/toml-test\n)/\n" }, "foo": [ { "name": "first" }, { "name": "second" }, { "name": "third" }, { "name": "fourth" } ], "bar": [ { "foo": "bar" } ] }, "build-system": { "requires": [ "poetry-core>=1.0.0a3" ], "build-backend": "poetry.core.masonry.api" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/json/table_names.json0000644000000000000000000000045314657064216017321 0ustar00{ "Special \"table\"": { "foo": "bar" }, "BJ's Restaurant": { "account": "dining" }, "]": { "foo": 1 }, "[bracket]": { "bar": 2 }, "a": { "b.c": { "d": { "baz": 3 } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/newline_in_strings.toml0000644000000000000000000000006514657064216017777 0ustar00this = "this\\nthat\\nmore" foo = """bar baz qux """ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/preserve_quotes_in_string.toml0000644000000000000000000000003214657064216021400 0ustar00this = """this "" more""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/pyproject.toml0000644000000000000000000000371214657064216016120 0ustar00[tool.poetry] name = "poetry" version = "0.11.2" description = "Python dependency management and packaging made easy." authors = [ "Sébastien Eustace " ] license = "MIT" readme = "README.md" homepage = "https://poetry.eustace.io/" repository = "https://github.com/sdispater/poet" documentation = "https://poetry.eustace.io/docs" keywords = ["packaging", "dependency", "poetry"] classifiers = [ "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ] # Requirements [tool.poetry.dependencies] python = "~2.7 || ^3.4" cleo = "^0.6.7" pytoml = "^0.1.16" requests = "^2.18" cachy = "^0.2" requests-toolbelt = "^0.8.0" jsonschema = "^2.6" pyrsistent = "^0.14.2" pyparsing = "^2.2" cachecontrol = { version = "^0.12.4", extras = ["filecache"] } pkginfo = "^1.4" html5lib = "^1.0" shellingham = "^1.1" # The typing module is not in the stdlib in Python 2.7 and 3.4 typing = { version = "^3.6", python = "~2.7 || ~3.4" } # Use pathlib2 for Python 2.7 and 3.4 pathlib2 = { version = "^2.3", python = "~2.7 || ~3.4" } # Use virtualenv for Python 2.7 since venv does not exist virtualenv = { version = "^16.0", python = "~2.7" } [tool.poetry.dev-dependencies] pytest = "^3.4" pytest-cov = "^2.5" mkdocs = "^0.17.3" pymdown-extensions = "^4.9" pygments = "^2.2" pytest-mock = "^1.9" pygments-github-lexers = "^0.0.5" black = { version = "^18.3-alpha.0", python = "^3.6" } pre-commit = "^1.10" tox = "^3.0" [tool.poetry.scripts] poetry = "poetry.console:main" [build-system] requires = ["poetry-core>=1.0.0a3"] build-backend = "poetry.core.masonry.api" [tool.black] line-length = 88 py36 = true include = '\.pyi?$' exclude = ''' /( \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | build | dist | tests/toml-test )/ ''' [[tool.foo]] name = 'first' [[tool.foo]] name = 'second' # CS [[tool.foo]] name = 'third' [[tool.foo]] name = 'fourth' [[tool.bar]] foo = "bar" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/sections_with_same_start.toml0000644000000000000000000000014414657064216021201 0ustar00[section] key = "value" [section2] "key2" = 12.34 [section2.sub-section] "key3" = "something" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0801957 tomlkit-0.13.2/tests/examples/string_slash_whitespace_newline.toml0000644000000000000000000000012214657064216022526 0ustar00no_whitespace = """hello \ world""" has_whitespace = """hello \ world""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/examples/table_names.toml0000644000000000000000000000021714657064216016350 0ustar00['Special "table"'] foo = "bar" ["BJ's Restaurant"] account = "dining" ["]"] foo = 1 [ "[bracket]" ] bar = 2 [ a . "b.c" . d ] baz = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/examples/test.toml0000644000000000000000000000305314657064216015056 0ustar00# This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" dob = 1979-05-27T07:32:00-08:00 # First class dates [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # Indentation (tabs and/or spaces) is allowed but not required [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] str_multiline = """ Roses are red Violets are blue""" str_quoted = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." str2 = """ The quick brown \ fox jumps over \ the lazy dog.""" key3 = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ # What you see is what you get. winpath = 'C:\Users\nodejs\templates' winpath2 = '\\ServerX\admin$\system32\' quoted = 'Tom "Dubs" Preston-Werner' regex = '<\i\c*\s*>' regex2 = '''I [dw]on't need \d{2} apples''' lines = ''' The first newline is trimmed in raw strings. All other whitespace is preserved. ''' [[fruit]] name = "apple" [fruit.physical] color = "red" shape = "round" [[fruit.variety]] name = "red delicious" [[fruit.variety]] name = "granny smith" [[fruit]] name = "banana" [[fruit.variety]] name = "plantain" points = [ { x = 1, y = 2, z = 3 }, # This value is so special to me { x = 7, y = 8, z = 9 }, { x = 2, y = 4, z = 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_api.py0000644000000000000000000003007514657064216013552 0ustar00import io import json import os from datetime import date from datetime import datetime from datetime import time from types import MappingProxyType import pytest import tomlkit from tomlkit import dump from tomlkit import dumps from tomlkit import load from tomlkit import loads from tomlkit import parse from tomlkit.exceptions import InvalidCharInStringError from tomlkit.exceptions import InvalidControlChar from tomlkit.exceptions import InvalidDateError from tomlkit.exceptions import InvalidDateTimeError from tomlkit.exceptions import InvalidNumberError from tomlkit.exceptions import InvalidStringError from tomlkit.exceptions import InvalidTimeError from tomlkit.exceptions import UnexpectedCharError from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Key from tomlkit.items import Table from tomlkit.items import Time from tomlkit.toml_document import TOMLDocument def json_serial(obj): """JSON serializer for objects not serializable by default json code""" if isinstance(obj, (datetime, date, time)): return obj.isoformat() raise TypeError(f"Type {type(obj)} not serializable") @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "newline_in_strings", "preserve_quotes_in_string", "string_slash_whitespace_newline", "table_names", ], ) def test_parse_can_parse_valid_toml_files(example, example_name): assert isinstance(parse(example(example_name)), TOMLDocument) assert isinstance(loads(example(example_name)), TOMLDocument) @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "newline_in_strings", "preserve_quotes_in_string", "string_slash_whitespace_newline", "table_names", ], ) def test_load_from_file_object(example_name): with open( os.path.join(os.path.dirname(__file__), "examples", example_name + ".toml"), encoding="utf-8", ) as fp: assert isinstance(load(fp), TOMLDocument) @pytest.mark.parametrize("example_name", ["0.5.0", "pyproject", "table_names"]) def test_parsed_document_are_properly_json_representable( example, json_example, example_name ): doc = json.loads(json.dumps(parse(example(example_name)), default=json_serial)) json_doc = json.loads(json_example(example_name)) assert doc == json_doc @pytest.mark.parametrize( "example_name,error", [ ("section_with_trailing_characters", UnexpectedCharError), ("key_value_with_trailing_chars", UnexpectedCharError), ("array_with_invalid_chars", UnexpectedCharError), ("invalid_number", InvalidNumberError), ("invalid_date", InvalidDateError), ("invalid_time", InvalidTimeError), ("invalid_datetime", InvalidDateTimeError), ("trailing_comma", UnexpectedCharError), ("newline_in_singleline_string", InvalidControlChar), ("string_slash_whitespace_char", InvalidCharInStringError), ("array_no_comma", UnexpectedCharError), ("array_duplicate_comma", UnexpectedCharError), ("array_leading_comma", UnexpectedCharError), ("inline_table_no_comma", UnexpectedCharError), ("inline_table_duplicate_comma", UnexpectedCharError), ("inline_table_leading_comma", UnexpectedCharError), ("inline_table_trailing_comma", UnexpectedCharError), ], ) def test_parse_raises_errors_for_invalid_toml_files( invalid_example, error, example_name ): with pytest.raises(error): parse(invalid_example(example_name)) @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "table_names", ], ) def test_original_string_and_dumped_string_are_equal(example, example_name): content = example(example_name) parsed = parse(content) assert content == dumps(parsed) def test_a_raw_dict_can_be_dumped(): s = dumps({"foo": "bar"}) assert s == 'foo = "bar"\n' def test_mapping_types_can_be_dumped(): x = MappingProxyType({"foo": "bar"}) assert dumps(x) == 'foo = "bar"\n' def test_dumps_weird_object(): with pytest.raises(TypeError): dumps(object()) def test_dump_tuple_value_as_array(): x = {"foo": (1, 2)} assert dumps(x) == "foo = [1, 2]\n" x = {"foo": ({"a": 1}, {"a": 2})} assert dumps(x) == "[[foo]]\na = 1\n\n[[foo]]\na = 2\n" def test_dump_to_file_object(): doc = {"foo": "bar"} fp = io.StringIO() dump(doc, fp) assert fp.getvalue() == 'foo = "bar"\n' def test_integer(): i = tomlkit.integer("34") assert isinstance(i, Integer) def test_float(): i = tomlkit.float_("34.56") assert isinstance(i, Float) def test_boolean(): i = tomlkit.boolean("true") assert isinstance(i, Bool) def test_date(): dt = tomlkit.date("1979-05-13") assert isinstance(dt, Date) with pytest.raises(ValueError): tomlkit.date("12:34:56") def test_time(): dt = tomlkit.time("12:34:56") assert isinstance(dt, Time) with pytest.raises(ValueError): tomlkit.time("1979-05-13") def test_datetime(): dt = tomlkit.datetime("1979-05-13T12:34:56") assert isinstance(dt, DateTime) with pytest.raises(ValueError): tomlkit.time("1979-05-13") def test_array(): a = tomlkit.array() assert isinstance(a, Array) a = tomlkit.array("[1,2, 3]") assert isinstance(a, Array) def test_table(): t = tomlkit.table() assert isinstance(t, Table) def test_inline_table(): t = tomlkit.inline_table() assert isinstance(t, InlineTable) def test_aot(): t = tomlkit.aot() assert isinstance(t, AoT) def test_key(): k = tomlkit.key("foo") assert isinstance(k, Key) def test_key_value(): k, i = tomlkit.key_value("foo = 12") assert isinstance(k, Key) assert isinstance(i, Integer) def test_string(): s = tomlkit.string('foo "') assert s.value == 'foo "' assert s.as_string() == '"foo \\""' def test_item_dict_to_table(): t = tomlkit.item({"foo": {"bar": "baz"}}) assert t.value == {"foo": {"bar": "baz"}} assert ( t.as_string() == """[foo] bar = "baz" """ ) def test_item_mixed_aray(): example = [{"a": 3}, "b", 42] expected = '[{a = 3}, "b", 42]' t = tomlkit.item(example) assert t.as_string().strip() == expected assert dumps({"x": {"y": example}}).strip() == "[x]\ny = " + expected def test_build_super_table(): doc = tomlkit.document() table = tomlkit.table(True) table.add("bar", {"x": 1}) doc.add("foo", table) assert doc.as_string() == "[foo.bar]\nx = 1\n" def test_add_dotted_key(): doc = tomlkit.document() doc.add(tomlkit.key(["foo", "bar"]), 1) assert doc.as_string() == "foo.bar = 1\n" table = tomlkit.table() table.add(tomlkit.key(["foo", "bar"]), 1) assert table.as_string() == "foo.bar = 1\n" @pytest.mark.parametrize( ("raw", "expected"), [ ("true", True), ("false", False), ], ) def test_value_parses_boolean(raw, expected): parsed = tomlkit.value(raw) assert parsed == expected @pytest.mark.parametrize( "raw", ["t", "f", "tru", "fals", "test", "friend", "truthy", "falsify"] ) def test_value_rejects_values_looking_like_bool_at_start(raw): """Reproduces https://github.com/sdispater/tomlkit/issues/165""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ "truee", "truely", "true-thoughts", "true_hip_hop", ], ) def test_value_rejects_values_having_true_prefix(raw): """Values that have ``true`` or ``false`` as prefix but then have additional chars are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ "falsee", "falsely", "false-ideas", "false_prophet", ], ) def test_value_rejects_values_having_false_prefix(raw): """Values that have ``true`` or ``false`` as prefix but then have additional chars are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ '"foo"1.2', "truefalse", "1.0false", "100true", "truetrue", "falsefalse", "1.2.3.4", "[][]", "{a=[][]}[]", "true[]", "false{a=1}", ], ) def test_value_rejects_values_with_appendage(raw): """Values that appear valid at the beginning but leave chars unparsed are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) def test_create_super_table_with_table(): data = {"foo": {"bar": {"a": 1}}} assert dumps(data) == "[foo.bar]\na = 1\n" def test_create_super_table_with_aot(): data = {"foo": {"bar": [{"a": 1}]}} assert dumps(data) == "[[foo.bar]]\na = 1\n" @pytest.mark.parametrize( "kwargs, example, expected", [ ({}, "My\nString", '"My\\nString"'), ({"escape": False}, "My String\t", '"My String\t"'), ({"literal": True}, "My String\t", "'My String\t'"), ({"escape": True, "literal": True}, "My String\t", "'My String\t'"), ({}, "My String\u0001", '"My String\\u0001"'), ({}, "My String\u000b", '"My String\\u000b"'), ({}, "My String\x08", '"My String\\b"'), ({}, "My String\x0c", '"My String\\f"'), ({}, "My String\x01", '"My String\\u0001"'), ({}, "My String\x06", '"My String\\u0006"'), ({}, "My String\x12", '"My String\\u0012"'), ({}, "My String\x7f", '"My String\\u007f"'), ({"escape": False}, "My String\u0001", '"My String\u0001"'), ({"multiline": True}, "\nMy\nString\n", '"""\nMy\nString\n"""'), ({"multiline": True}, 'My"String', '"""My"String"""'), ({"multiline": True}, 'My""String', '"""My""String"""'), ({"multiline": True}, 'My"""String', '"""My""\\"String"""'), ({"multiline": True}, 'My""""String', '"""My""\\""String"""'), ( {"multiline": True}, '"""My"""Str"""ing"""', '"""""\\"My""\\"Str""\\"ing""\\""""', ), ({"multiline": True, "literal": True}, "My\nString", "'''My\nString'''"), ({"multiline": True, "literal": True}, "My'String", "'''My'String'''"), ({"multiline": True, "literal": True}, "My\r\nString", "'''My\r\nString'''"), ( {"literal": True}, r"C:\Users\nodejs\templates", r"'C:\Users\nodejs\templates'", ), ({"literal": True}, r"<\i\c*\s*>", r"'<\i\c*\s*>'"), ( {"multiline": True, "literal": True}, r"I [dw]on't need \d{2} apples", r"'''I [dw]on't need \d{2} apples'''", ), ], ) def test_create_string(kwargs, example, expected): value = tomlkit.string(example, **kwargs) assert value.as_string() == expected @pytest.mark.parametrize( "kwargs, example", [ ({"literal": True}, "My'String"), ({"literal": True}, "My\nString"), ({"literal": True}, "My\r\nString"), ({"literal": True}, "My\bString"), ({"literal": True}, "My\x08String"), ({"literal": True}, "My\x0cString"), ({"literal": True}, "My\x7fString"), ({"multiline": True, "literal": True}, "My'''String"), ], ) def test_create_string_with_invalid_characters(kwargs, example): with pytest.raises(InvalidStringError): tomlkit.string(example, **kwargs) def test_parse_empty_quoted_table_name(): content = "['']\nx = 1\n" parsed = loads(content) assert parsed == {"": {"x": 1}} assert dumps(parsed) == content ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_build.py0000644000000000000000000000602114657064216014072 0ustar00import datetime from tomlkit import aot from tomlkit import array from tomlkit import comment from tomlkit import document from tomlkit import item from tomlkit import nl from tomlkit import parse from tomlkit import table from tomlkit._utils import _utc def test_build_example(example): content = example("example") doc = document() doc.add(comment("This is a TOML document. Boom.")) doc.add(nl()) doc.add("title", "TOML Example") owner = table() owner.add("name", "Tom Preston-Werner") owner.add("organization", "GitHub") owner.add("bio", "GitHub Cofounder & CEO\nLikes tater tots and beer.") owner.add("dob", datetime.datetime(1979, 5, 27, 7, 32, tzinfo=_utc)) owner["dob"].comment("First class dates? Why not?") doc.add("owner", owner) database = table() database["server"] = "192.168.1.1" database["ports"] = [8001, 8001, 8002] database["connection_max"] = 5000 database["enabled"] = True doc["database"] = database servers = table() servers.add(nl()) c = comment( "You can indent as you please. Tabs or spaces. TOML don't care." ).indent(2) c.trivia.trail = "" servers.add(c) alpha = table() servers.append("alpha", alpha) alpha.indent(2) alpha.add("ip", "10.0.0.1") alpha.add("dc", "eqdc10") beta = table() servers.append("beta", beta) beta.add("ip", "10.0.0.2") beta.add("dc", "eqdc10") beta.add("country", "中国") beta["country"].comment("This should be parsed as UTF-8") beta.indent(2) doc["servers"] = servers clients = table() doc.add("clients", clients) clients["data"] = item([["gamma", "delta"], [1, 2]]).comment( "just an update to make sure parsers support it" ) clients.add(nl()) clients.add(comment("Line breaks are OK when inside arrays")) clients["hosts"] = array( """[ "alpha", "omega" ]""" ) doc.add(nl()) doc.add(comment("Products")) products = aot() doc["products"] = products hammer = table().indent(2) hammer["name"] = "Hammer" hammer["sku"] = 738594937 nail = table().indent(2) nail["name"] = "Nail" nail["sku"] = 284758393 nail["color"] = "gray" products.append(hammer) products.append(nail) assert content == doc.as_string() def test_add_remove(): content = "" doc = parse(content) doc.append("foo", "bar") assert ( doc.as_string() == """foo = "bar" """ ) doc.remove("foo") assert doc.as_string() == "" def test_append_table_after_multiple_indices(): content = """ [packages] foo = "*" [settings] enable = false [packages.bar] version = "*" """ doc = parse(content) doc.append("foobar", {"name": "John"}) def test_top_level_keys_are_put_at_the_root_of_the_document(): doc = document() doc.add(comment("Comment")) doc["foo"] = {"name": "test"} doc["bar"] = 1 expected = """\ # Comment bar = 1 [foo] name = "test" """ assert doc.as_string() == expected ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_items.py0000644000000000000000000005165614657064216014132 0ustar00import copy import math import pickle from datetime import date from datetime import datetime from datetime import time from datetime import timedelta from datetime import timezone import pytest from tests.util import assert_is_ppo from tests.util import elementary_test from tomlkit import api from tomlkit import parse from tomlkit.exceptions import NonExistentKey from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Comment from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Item from tomlkit.items import KeyType from tomlkit.items import Null from tomlkit.items import SingleKey as Key from tomlkit.items import String from tomlkit.items import StringType from tomlkit.items import Table from tomlkit.items import Trivia from tomlkit.items import item from tomlkit.parser import Parser @pytest.fixture() def tz_pst(): try: from datetime import timezone return timezone(timedelta(hours=-8), "PST") except ImportError: from datetime import tzinfo class PST(tzinfo): def utcoffset(self, dt): return timedelta(hours=-8) def tzname(self, dt): return "PST" def dst(self, dt): return timedelta(0) return PST() @pytest.fixture() def tz_utc(): try: from datetime import timezone return timezone.utc except ImportError: from datetime import tzinfo class UTC(tzinfo): def utcoffset(self, dt): return timedelta(hours=0) def tzname(self, dt): return "UTC" def dst(self, dt): return timedelta(0) return UTC() def test_item_base_has_no_unwrap(): trivia = Trivia(indent="\t", comment_ws=" ", comment="For unit test") item = Item(trivia) try: item.unwrap() except NotImplementedError: pass else: raise AssertionError("`items.Item` should not implement `unwrap`") def test_integer_unwrap(): elementary_test(item(666), int) def test_float_unwrap(): elementary_test(item(2.78), float) def test_false_unwrap(): elementary_test(item(False), bool) def test_true_unwrap(): elementary_test(item(True), bool) def test_datetime_unwrap(): dt = datetime.now(tz=timezone.utc) elementary_test(item(dt), datetime) def test_string_unwrap(): elementary_test(item("hello"), str) def test_null_unwrap(): n = Null() elementary_test(n, type(None)) def test_aot_unwrap(): d = item([{"a": "A"}, {"b": "B"}]) unwrapped = d.unwrap() assert_is_ppo(unwrapped, list) for du, _ in zip(unwrapped, d): assert_is_ppo(du, dict) for ku in du: vu = du[ku] assert_is_ppo(ku, str) assert_is_ppo(vu, str) def test_time_unwrap(): t = time(3, 8, 14) elementary_test(item(t), time) def test_date_unwrap(): d = date.today() elementary_test(item(d), date) def test_array_unwrap(): trivia = Trivia(indent="\t", comment_ws=" ", comment="For unit test") i = item(666) f = item(2.78) b = item(False) a = Array([i, f, b], trivia) a_unwrapped = a.unwrap() assert_is_ppo(a_unwrapped, list) assert_is_ppo(a_unwrapped[0], int) assert_is_ppo(a_unwrapped[1], float) assert_is_ppo(a_unwrapped[2], bool) def test_abstract_table_unwrap(): table = item({"foo": "bar"}) super_table = item({"table": table, "baz": "borg"}) table_unwrapped = super_table.unwrap() sub_table = table_unwrapped["table"] assert_is_ppo(table_unwrapped, dict) assert_is_ppo(sub_table, dict) for ku in sub_table: vu = sub_table[ku] assert_is_ppo(ku, str) assert_is_ppo(vu, str) def test_key_comparison(): k = Key("foo") assert k == Key("foo") assert k == "foo" assert k != "bar" assert k != 5 def test_items_can_be_appended_to_and_removed_from_a_table(): string = """[table] """ parser = Parser(string) _, table = parser._parse_table() assert isinstance(table, Table) assert table.as_string() == "" table.append(Key("foo"), String(StringType.SLB, "bar", "bar", Trivia(trail="\n"))) assert table.as_string() == 'foo = "bar"\n' table.append( Key("baz"), Integer(34, Trivia(comment_ws=" ", comment="# Integer", trail=""), "34"), ) assert table.as_string() == 'foo = "bar"\nbaz = 34 # Integer' table.remove(Key("baz")) assert table.as_string() == 'foo = "bar"\n' table.remove(Key("foo")) assert table.as_string() == "" with pytest.raises(NonExistentKey): table.remove(Key("foo")) def test_items_can_be_appended_to_and_removed_from_an_inline_table(): string = """table = {} """ parser = Parser(string) _, table = parser._parse_item() assert isinstance(table, InlineTable) assert table.as_string() == "{}" table.append(Key("foo"), String(StringType.SLB, "bar", "bar", Trivia(trail=""))) assert table.as_string() == '{foo = "bar"}' table.append(Key("baz"), Integer(34, Trivia(trail=""), "34")) assert table.as_string() == '{foo = "bar", baz = 34}' table.remove(Key("baz")) assert table.as_string() == '{foo = "bar"}' table.remove(Key("foo")) assert table.as_string() == "{}" with pytest.raises(NonExistentKey): table.remove(Key("foo")) def test_inf_and_nan_are_supported(example): content = example("0.5.0") doc = parse(content) assert doc["sf1"] == float("inf") assert doc["sf2"] == float("inf") assert doc["sf3"] == float("-inf") assert math.isnan(doc["sf4"]) assert math.isnan(doc["sf5"]) assert math.isnan(doc["sf6"]) def test_hex_octal_and_bin_integers_are_supported(example): content = example("0.5.0") doc = parse(content) assert doc["hex1"] == 3735928559 assert doc["hex2"] == 3735928559 assert doc["hex3"] == 3735928559 assert doc["oct1"] == 342391 assert doc["oct2"] == 493 assert doc["bin1"] == 214 def test_key_automatically_sets_proper_string_type_if_not_bare(): key = Key("foo.bar") assert key.t == KeyType.Basic key = Key("") assert key.t == KeyType.Basic def test_array_behaves_like_a_list(): a = item([1, 2]) assert a == [1, 2] assert a.as_string() == "[1, 2]" a += [3, 4] assert a == [1, 2, 3, 4] assert a.as_string() == "[1, 2, 3, 4]" del a[2] assert a == [1, 2, 4] assert a.as_string() == "[1, 2, 4]" assert a.pop() == 4 assert a == [1, 2] assert a.as_string() == "[1, 2]" a[0] = 4 assert a == [4, 2] a[-2] = 0 assert a == [0, 2] del a[-2] assert a == [2] assert a.as_string() == "[2]" a.clear() assert a == [] assert a.as_string() == "[]" content = """a = [1, 2,] # Comment """ doc = parse(content) assert str(doc["a"]) == "[1, 2]" assert doc["a"] == [1, 2] doc["a"] += [3, 4] assert doc["a"] == [1, 2, 3, 4] assert ( doc.as_string() == """a = [1, 2, 3, 4] # Comment """ ) def test_array_multiline(): t = item([1, 2, 3, 4, 5, 6, 7, 8]) t.multiline(True) expected = """\ [ 1, 2, 3, 4, 5, 6, 7, 8, ]""" assert expected == t.as_string() t = item([]) t.multiline(True) assert t.as_string() == "[]" def test_array_multiline_modify(): doc = parse( """\ a = [ "abc" ]""" ) doc["a"].append("def") expected = """\ a = [ "abc", "def" ]""" assert expected == doc.as_string() doc["a"].insert(1, "ghi") expected = """\ a = [ "abc", "ghi", "def" ]""" assert expected == doc.as_string() def test_append_to_empty_array(): doc = parse("x = [ ]") doc["x"].append("a") assert doc.as_string() == 'x = ["a" ]' doc = parse("x = [\n]") doc["x"].append("a") assert doc.as_string() == 'x = [\n "a"\n]' def test_modify_array_with_comment(): doc = parse("x = [ # comment\n]") doc["x"].append("a") assert doc.as_string() == 'x = [ # comment\n "a"\n]' doc = parse( """\ x = [ "a", # comment "b" ]""" ) doc["x"].insert(1, "c") expected = """\ x = [ "a", # comment "c", "b" ]""" assert doc.as_string() == expected doc = parse( """\ x = [ 1 # comment ]""" ) doc["x"].append(2) assert ( doc.as_string() == """\ x = [ 1, # comment 2 ]""" ) doc["x"].pop(0) assert doc.as_string() == "x = [\n 2\n]" def test_append_to_multiline_array_with_comment(): doc = parse( """\ x = [ # Here is a comment 1, 2 ] """ ) doc["x"].multiline(True).append(3) assert ( doc.as_string() == """\ x = [ # Here is a comment 1, 2, 3, ] """ ) assert doc["x"].pop() == 3 assert ( doc.as_string() == """\ x = [ # Here is a comment 1, 2, ] """ ) def test_append_dict_to_array(): doc = parse("x = []") doc["x"].append({"name": "John Doe", "email": "john@doe.com"}) expected = 'x = [{name = "John Doe",email = "john@doe.com"}]' assert doc.as_string() == expected # Make sure the produced string is valid assert parse(doc.as_string()) == doc def test_dicts_are_converted_to_tables(): t = item({"foo": {"bar": "baz"}}) assert ( t.as_string() == """[foo] bar = "baz" """ ) def test_array_add_line(): t = api.array() t.add_line(1, 2, 3, comment="Line 1") t.add_line(4, 5, 6, comment="Line 2") t.add_line(7, api.ws(","), api.ws(" "), 8, add_comma=False) t.add_line(comment="Line 4") t.add_line(indent="") assert len(t) == 8 assert list(t) == [1, 2, 3, 4, 5, 6, 7, 8] assert ( t.as_string() == """[ 1, 2, 3, # Line 1 4, 5, 6, # Line 2 7, 8, # Line 4 ]""" ) def test_array_add_line_invalid_value(): t = api.array() with pytest.raises(ValueError, match="is not allowed"): t.add_line(1, api.ws(" ")) with pytest.raises(ValueError, match="is not allowed"): t.add_line(Comment(Trivia(" ", comment="test"))) assert len(t) == 0 def test_dicts_are_converted_to_tables_and_keep_order(): t = item( { "foo": { "bar": "baz", "abc": 123, "baz": [{"c": 3, "b": 2, "a": 1}], }, } ) assert ( t.as_string() == """[foo] bar = "baz" abc = 123 [[foo.baz]] c = 3 b = 2 a = 1 """ ) def test_dicts_are_converted_to_tables_and_are_sorted_if_requested(): t = item( { "foo": { "bar": "baz", "abc": 123, "baz": [{"c": 3, "b": 2, "a": 1}], }, }, _sort_keys=True, ) assert ( t.as_string() == """[foo] abc = 123 bar = "baz" [[foo.baz]] a = 1 b = 2 c = 3 """ ) def test_dicts_with_sub_dicts_are_properly_converted(): t = item( {"foo": {"bar": {"string": "baz"}, "int": 34, "float": 3.14}}, _sort_keys=True ) assert ( t.as_string() == """[foo] float = 3.14 int = 34 [foo.bar] string = "baz" """ ) def test_item_array_of_dicts_converted_to_aot(): a = item({"foo": [{"bar": "baz"}]}) assert ( a.as_string() == """[[foo]] bar = "baz" """ ) def test_add_float_to_int(): content = "[table]\nmy_int = 2043" doc = parse(content) doc["table"]["my_int"] += 5.0 assert doc["table"]["my_int"] == 2048.0 assert isinstance(doc["table"]["my_int"], float) def test_sub_float_from_int(): content = "[table]\nmy_int = 2048" doc = parse(content) doc["table"]["my_int"] -= 5.0 assert doc["table"]["my_int"] == 2043.0 assert isinstance(doc["table"]["my_int"], float) def test_sub_int_from_float(): content = "[table]\nmy_int = 2048.0" doc = parse(content) doc["table"]["my_int"] -= 5 assert doc["table"]["my_int"] == 2043.0 def test_add_sum_int_with_float(): content = "[table]\nmy_int = 2048.3" doc = parse(content) doc["table"]["my_int"] += 5 assert doc["table"]["my_int"] == 2053.3 def test_integers_behave_like_ints(): i = item(34) assert i == 34 assert i.as_string() == "34" i += 1 assert i == 35 assert i.as_string() == "35" i -= 2 assert i == 33 assert i.as_string() == "33" i /= 2 assert i == 16.5 assert i.as_string() == "16.5" doc = parse("int = +34") doc["int"] += 1 assert doc.as_string() == "int = +35" def test_floats_behave_like_floats(): i = item(34.12) assert i == 34.12 assert i.as_string() == "34.12" i += 1 assert i == 35.12 assert i.as_string() == "35.12" i -= 2 assert i == 33.12 assert i.as_string() == "33.12" doc = parse("float = +34.12") doc["float"] += 1 assert doc.as_string() == "float = +35.12" def test_datetimes_behave_like_datetimes(tz_utc, tz_pst): i = item(datetime(2018, 7, 22, 12, 34, 56)) assert i == datetime(2018, 7, 22, 12, 34, 56) assert i.as_string() == "2018-07-22T12:34:56" i += timedelta(days=1) assert i == datetime(2018, 7, 23, 12, 34, 56) assert i.as_string() == "2018-07-23T12:34:56" i -= timedelta(days=2) assert i == datetime(2018, 7, 21, 12, 34, 56) assert i.as_string() == "2018-07-21T12:34:56" i = i.replace(year=2019, tzinfo=tz_utc) assert i == datetime(2019, 7, 21, 12, 34, 56, tzinfo=tz_utc) assert i.as_string() == "2019-07-21T12:34:56+00:00" i = i.astimezone(tz_pst) assert i == datetime(2019, 7, 21, 4, 34, 56, tzinfo=tz_pst) assert i.as_string() == "2019-07-21T04:34:56-08:00" doc = parse("dt = 2018-07-22T12:34:56-05:00") doc["dt"] += timedelta(days=1) assert doc.as_string() == "dt = 2018-07-23T12:34:56-05:00" def test_dates_behave_like_dates(): i = item(date(2018, 7, 22)) assert i == date(2018, 7, 22) assert i.as_string() == "2018-07-22" i += timedelta(days=1) assert i == date(2018, 7, 23) assert i.as_string() == "2018-07-23" i -= timedelta(days=2) assert i == date(2018, 7, 21) assert i.as_string() == "2018-07-21" i = i.replace(year=2019) assert i == date(2019, 7, 21) assert i.as_string() == "2019-07-21" doc = parse("dt = 2018-07-22 # Comment") doc["dt"] += timedelta(days=1) assert doc.as_string() == "dt = 2018-07-23 # Comment" def test_parse_datetime_followed_by_space(): # issue #260 doc = parse("dt = 2018-07-22 ") assert doc["dt"] == date(2018, 7, 22) assert doc.as_string() == "dt = 2018-07-22 " doc = parse("dt = 2013-01-24 13:48:01.123456 ") assert doc["dt"] == datetime(2013, 1, 24, 13, 48, 1, 123456) assert doc.as_string() == "dt = 2013-01-24 13:48:01.123456 " def test_times_behave_like_times(): i = item(time(12, 34, 56)) assert i == time(12, 34, 56) assert i.as_string() == "12:34:56" i = i.replace(hour=13) assert i == time(13, 34, 56) assert i.as_string() == "13:34:56" def test_strings_behave_like_strs(): i = item("foo") assert i == "foo" assert i.as_string() == '"foo"' i += " bar" assert i == "foo bar" assert i.as_string() == '"foo bar"' i += " é" assert i == "foo bar é" assert i.as_string() == '"foo bar é"' doc = parse('str = "foo" # Comment') doc["str"] += " bar" assert doc.as_string() == 'str = "foo bar" # Comment' def test_string_add_preserve_escapes(): i = api.value('"foo\\"bar"') i += " baz" assert i == 'foo"bar baz' assert i.as_string() == '"foo\\"bar baz"' def test_tables_behave_like_dicts(): t = item({"foo": "bar"}) assert ( t.as_string() == """foo = "bar" """ ) t.update({"bar": "baz"}) assert ( t.as_string() == """foo = "bar" bar = "baz" """ ) t.update({"bar": "boom"}) assert ( t.as_string() == """foo = "bar" bar = "boom" """ ) assert t.get("bar") == "boom" assert t.setdefault("foobar", "fuzz") == "fuzz" assert ( t.as_string() == """foo = "bar" bar = "boom" foobar = "fuzz" """ ) def test_items_are_pickable(): n = item(12) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12" n = item(12.34) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12.34" n = item(True) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "true" n = item(datetime(2018, 10, 11, 12, 34, 56, 123456)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "2018-10-11T12:34:56.123456" n = item(date(2018, 10, 11)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "2018-10-11" n = item(time(12, 34, 56, 123456)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12:34:56.123456" n = item([1, 2, 3]) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "[1, 2, 3]" n = item({"foo": "bar"}) s = pickle.dumps(n) assert pickle.loads(s).as_string() == 'foo = "bar"\n' n = api.inline_table() n["foo"] = "bar" s = pickle.dumps(n) assert pickle.loads(s).as_string() == '{foo = "bar"}' n = item("foo") s = pickle.dumps(n) assert pickle.loads(s).as_string() == '"foo"' n = item([{"foo": "bar"}]) s = pickle.dumps(n) assert pickle.loads(s).as_string() == 'foo = "bar"\n' def test_trim_comments_when_building_inline_table(): table = api.inline_table() row = parse('foo = "bar" # Comment') table.update(row) assert table.as_string() == '{foo = "bar"}' value = item("foobaz") value.comment("Another comment") table.append("baz", value) assert "# Another comment" not in table.as_string() assert table.as_string() == '{foo = "bar", baz = "foobaz"}' def test_deleting_inline_table_element_does_not_leave_trailing_separator(): table = api.inline_table() table["foo"] = "bar" table["baz"] = "boom" assert table.as_string() == '{foo = "bar", baz = "boom"}' del table["baz"] assert table.as_string() == '{foo = "bar"}' table = api.inline_table() table["foo"] = "bar" del table["foo"] table["baz"] = "boom" assert table.as_string() == '{baz = "boom"}' def test_deleting_inline_table_element_does_not_leave_trailing_separator2(): doc = parse('a = {foo = "bar", baz = "boom"}') table = doc["a"] assert table.as_string() == '{foo = "bar", baz = "boom"}' del table["baz"] assert table.as_string() == '{foo = "bar" }' del table["foo"] assert table.as_string() == "{ }" table["baz"] = "boom" assert table.as_string() == '{ baz = "boom"}' def test_booleans_comparison(): boolean = Bool(True, Trivia()) assert boolean boolean = Bool(False, Trivia()) assert not boolean s = """[foo] value = false """ content = parse(s) assert {"foo": {"value": False}} == content assert {"value": False} == content["foo"] def test_table_copy(): table = item({"foo": "bar"}) table_copy = table.copy() assert isinstance(table_copy, Table) table["foo"] = "baz" assert table_copy["foo"] == "bar" assert table_copy.as_string() == 'foo = "bar"\n' def test_copy_copy(): result = parse( """ [tool.poetry] classifiers = [ # comment "a", "b", ] """ ) classifiers = result["tool"]["poetry"]["classifiers"] new = copy.copy(classifiers) assert new == classifiers @pytest.mark.parametrize( "key_str,escaped", [("\\", '"\\\\"'), ('"', '"\\""'), ("\t", '"\\t"'), ("\x10", '"\\u0010"')], ) def test_escape_key(key_str, escaped): assert api.key(key_str).as_string() == escaped def test_custom_encoders(): import decimal @api.register_encoder def encode_decimal(obj): if isinstance(obj, decimal.Decimal): return api.float_(str(obj)) raise TypeError assert api.item(decimal.Decimal("1.23")).as_string() == "1.23" with pytest.raises(TypeError): api.item(object()) assert api.dumps({"foo": decimal.Decimal("1.23")}) == "foo = 1.23\n" api.unregister_encoder(encode_decimal) def test_no_extra_minus_sign(): doc = parse("a = -1") assert doc.as_string() == "a = -1" doc["a"] *= -1 assert doc.as_string() == "a = +1" doc["a"] *= -1 assert doc.as_string() == "a = -1" doc = parse("a = -1.5") assert doc.as_string() == "a = -1.5" doc["a"] *= -1 assert doc.as_string() == "a = +1.5" doc["a"] *= -1 assert doc.as_string() == "a = -1.5" def test_serialize_table_with_dotted_key(): child = api.table() child.add(api.key(("b", "c")), 1) parent = api.table() parent.add("a", child) assert parent.as_string() == "[a]\nb.c = 1\n" def test_not_showing_parent_header_for_super_table(): doc = api.document() def add_table(parent, name): parent.add(name, api.table()) return parent[name] root = add_table(doc, "root") add_table(root, "first") add_table(root, "second") assert doc.as_string() == "[root.first]\n\n[root.second]\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_parser.py0000644000000000000000000000233114657064216014267 0ustar00import pytest from tomlkit.exceptions import EmptyTableNameError from tomlkit.exceptions import InternalParserError from tomlkit.exceptions import UnexpectedCharError from tomlkit.items import StringType from tomlkit.parser import Parser def test_parser_should_raise_an_internal_error_if_parsing_wrong_type_of_string(): parser = Parser('"foo"') with pytest.raises(InternalParserError) as e: parser._parse_string(StringType.SLL) assert e.value.line == 1 assert e.value.col == 0 def test_parser_should_raise_an_error_for_empty_tables(): content = """ [one] [] """ parser = Parser(content) with pytest.raises(EmptyTableNameError) as e: parser.parse() assert e.value.line == 3 assert e.value.col == 1 def test_parser_should_raise_an_error_if_equal_not_found(): content = """[foo] a {c = 1, d = 2} """ parser = Parser(content) with pytest.raises(UnexpectedCharError): parser.parse() def test_parse_multiline_string_ignore_the_first_newline(): content = 'a = """\nfoo\n"""' parser = Parser(content) assert parser.parse() == {"a": "foo\n"} content = 'a = """\r\nfoo\n"""' parser = Parser(content) assert parser.parse() == {"a": "foo\n"} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_toml_document.py0000644000000000000000000005014114657064216015646 0ustar00import copy import json import pickle from datetime import datetime from textwrap import dedent import pytest import tomlkit from tests.util import assert_is_ppo from tomlkit import parse from tomlkit import ws from tomlkit._utils import _utc from tomlkit.api import document from tomlkit.exceptions import NonExistentKey def test_document_is_a_dict(example): content = example("example") doc = parse(content) assert isinstance(doc, dict) assert "owner" in doc # owner owner = doc["owner"] assert doc.get("owner") == owner assert isinstance(owner, dict) assert "name" in owner assert owner["name"] == "Tom Preston-Werner" assert owner["organization"] == "GitHub" assert owner["bio"] == "GitHub Cofounder & CEO\nLikes tater tots and beer." assert owner["dob"] == datetime(1979, 5, 27, 7, 32, tzinfo=_utc) # database database = doc["database"] assert isinstance(database, dict) assert database["server"] == "192.168.1.1" assert database["ports"] == [8001, 8001, 8002] assert database["connection_max"] == 5000 assert database["enabled"] is True # servers servers = doc["servers"] assert isinstance(servers, dict) alpha = servers["alpha"] assert servers.get("alpha") == alpha assert isinstance(alpha, dict) assert alpha["ip"] == "10.0.0.1" assert alpha["dc"] == "eqdc10" beta = servers["beta"] assert isinstance(beta, dict) assert beta["ip"] == "10.0.0.2" assert beta["dc"] == "eqdc10" assert beta["country"] == "中国" # clients clients = doc["clients"] assert isinstance(clients, dict) data = clients["data"] assert isinstance(data, list) assert data[0] == ["gamma", "delta"] assert data[1] == [1, 2] assert clients["hosts"] == ["alpha", "omega"] # Products products = doc["products"] assert isinstance(products, list) hammer = products[0] assert hammer == {"name": "Hammer", "sku": 738594937} nail = products[1] assert nail["name"] == "Nail" assert nail["sku"] == 284758393 assert nail["color"] == "gray" nail["color"] = "black" assert nail["color"] == "black" assert doc["products"][1]["color"] == "black" assert nail.get("color") == "black" content = """foo = "bar" """ doc = parse(content) doc.update({"bar": "baz"}) assert ( doc.as_string() == """foo = "bar" bar = "baz" """ ) doc.update({"bar": "boom"}) assert ( doc.as_string() == """foo = "bar" bar = "boom" """ ) assert doc.setdefault("bar", "waldo") == "boom" assert ( doc.as_string() == """foo = "bar" bar = "boom" """ ) assert doc.setdefault("thud", "waldo") == "waldo" assert ( doc.as_string() == """foo = "bar" bar = "boom" thud = "waldo" """ ) def test_toml_document_without_super_tables(): content = """[tool.poetry] name = "foo" """ doc = parse(content) assert "tool" in doc assert "poetry" in doc["tool"] assert doc["tool"]["poetry"]["name"] == "foo" doc["tool"]["poetry"]["name"] = "bar" assert ( doc.as_string() == """[tool.poetry] name = "bar" """ ) d = {} d.update(doc) assert "tool" in d def test_toml_document_unwrap(): content = """[tool.poetry] name = "foo" """ doc = parse(content) unwrapped = doc.unwrap() assert_is_ppo(unwrapped, dict) assert_is_ppo(next(iter(unwrapped)), str) assert_is_ppo(unwrapped["tool"], dict) assert_is_ppo(next(iter(unwrapped["tool"])), str) assert_is_ppo(unwrapped["tool"]["poetry"]["name"], str) def test_toml_document_with_dotted_keys(example): content = example("0.5.0") doc = parse(content) assert "physical" in doc assert "color" in doc["physical"] assert "shape" in doc["physical"] assert doc["physical"]["color"] == "orange" assert doc["physical"]["shape"] == "round" assert "site" in doc assert "google.com" in doc["site"] assert doc["site"]["google.com"] assert doc["a"]["b"]["c"] == 1 assert doc["a"]["b"]["d"] == 2 def test_toml_document_super_table_with_different_sub_sections(example): content = example("pyproject") doc = parse(content) tool = doc["tool"] assert "poetry" in tool assert "black" in tool def test_adding_an_element_to_existing_table_with_ws_remove_ws(): content = """[foo] [foo.bar] """ doc = parse(content) doc["foo"]["int"] = 34 expected = """[foo] int = 34 [foo.bar] """ assert expected == doc.as_string() def test_document_with_aot_after_sub_tables(): content = """[foo.bar] name = "Bar" [foo.bar.baz] name = "Baz" [[foo.bar.tests]] name = "Test 1" """ doc = parse(content) assert doc["foo"]["bar"]["tests"][0]["name"] == "Test 1" def test_document_with_new_sub_table_after_other_table(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) assert doc["foo"]["name"] == "Bar" assert doc["bar"]["name"] == "Baz" assert doc["foo"]["baz"]["name"] == "Test 1" assert doc.as_string() == content def test_document_with_new_sub_table_after_other_table_delete(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) del doc["foo"] assert ( doc.as_string() == """[bar] name = "Baz" """ ) def test_document_with_new_sub_table_after_other_table_replace(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) doc["foo"] = {"a": "b"} assert ( doc.as_string() == """[foo] a = "b" [bar] name = "Baz" """ ) def test_inserting_after_element_with_no_new_line_adds_a_new_line(): doc = parse("foo = 10") doc["bar"] = 11 expected = """foo = 10 bar = 11 """ assert expected == doc.as_string() doc = parse("# Comment") doc["bar"] = 11 expected = """# Comment bar = 11 """ assert expected == doc.as_string() def test_inserting_after_deletion(): doc = parse("foo = 10\n") del doc["foo"] doc["bar"] = 11 expected = """bar = 11 """ assert expected == doc.as_string() def test_toml_document_with_dotted_keys_inside_table(example): content = example("0.5.0") doc = parse(content) t = doc["table"] assert "a" in t assert t["a"]["b"]["c"] == 1 assert t["a"]["b"]["d"] == 2 assert t["a"]["c"] == 3 def test_toml_document_with_super_aot_after_super_table(example): content = example("pyproject") doc = parse(content) aot = doc["tool"]["foo"] assert isinstance(aot, list) first = aot[0] assert first["name"] == "first" second = aot[1] assert second["name"] == "second" def test_toml_document_has_always_a_new_line_after_table_header(): content = """[section.sub]""" doc = parse(content) assert doc.as_string() == """[section.sub]""" doc["section"]["sub"]["foo"] = "bar" assert ( doc.as_string() == """[section.sub] foo = "bar" """ ) del doc["section"]["sub"]["foo"] assert doc.as_string() == """[section.sub]""" def test_toml_document_is_pickable(example): content = example("example") doc = parse(content) assert pickle.loads(pickle.dumps(doc)).as_string() == content def test_toml_document_set_super_table_element(): content = """[site.user] name = "John" """ doc = parse(content) doc["site"]["user"] = "Tom" assert ( doc.as_string() == """[site] user = "Tom" """ ) def test_toml_document_can_be_copied(): content = "[foo]\nbar=1" doc = parse(content) doc = copy.copy(doc) assert ( doc.as_string() == """[foo] bar=1""" ) assert doc == {"foo": {"bar": 1}} assert doc["foo"]["bar"] == 1 assert json.loads(json.dumps(doc)) == {"foo": {"bar": 1}} doc = parse(content) doc = doc.copy() assert ( doc.as_string() == """[foo] bar=1""" ) assert doc == {"foo": {"bar": 1}} assert doc["foo"]["bar"] == 1 assert json.loads(json.dumps(doc)) == {"foo": {"bar": 1}} def test_getting_inline_table_is_still_an_inline_table(): content = """\ [tool.poetry] name = "foo" [tool.poetry.dependencies] [tool.poetry.dev-dependencies] """ doc = parse(content) poetry_section = doc["tool"]["poetry"] dependencies = poetry_section["dependencies"] dependencies["foo"] = tomlkit.inline_table() dependencies["foo"]["version"] = "^2.0" dependencies["foo"]["source"] = "local" dependencies["bar"] = tomlkit.inline_table() dependencies["bar"]["version"] = "^3.0" dependencies["bar"]["source"] = "remote" dev_dependencies = poetry_section["dev-dependencies"] dev_dependencies["baz"] = tomlkit.inline_table() dev_dependencies["baz"]["version"] = "^4.0" dev_dependencies["baz"]["source"] = "other" assert ( doc.as_string() == """\ [tool.poetry] name = "foo" [tool.poetry.dependencies] foo = {version = "^2.0", source = "local"} bar = {version = "^3.0", source = "remote"} [tool.poetry.dev-dependencies] baz = {version = "^4.0", source = "other"} """ ) def test_declare_sub_table_with_intermediate_table(): content = """ [students] tommy = 87 mary = 66 [subjects] maths = "maths" english = "english" [students.bob] score = 91 """ doc = parse(content) assert {"tommy": 87, "mary": 66, "bob": {"score": 91}} == doc["students"] assert {"tommy": 87, "mary": 66, "bob": {"score": 91}} == doc.get("students") def test_values_can_still_be_set_for_out_of_order_tables(): content = """ [a.a] key = "value" [a.b] [a.a.c] """ doc = parse(content) doc["a"]["a"]["key"] = "new_value" assert doc["a"]["a"]["key"] == "new_value" expected = """ [a.a] key = "new_value" [a.b] [a.a.c] """ assert expected == doc.as_string() doc["a"]["a"]["bar"] = "baz" expected = """ [a.a] key = "new_value" bar = "baz" [a.b] [a.a.c] """ assert expected == doc.as_string() del doc["a"]["a"]["key"] expected = """ [a.a] bar = "baz" [a.b] [a.a.c] """ assert expected == doc.as_string() with pytest.raises(NonExistentKey): doc["a"]["a"]["key"] with pytest.raises(NonExistentKey): del doc["a"]["a"]["key"] def test_out_of_order_table_can_add_multiple_tables(): content = """\ [a.a.b] x = 1 [foo] bar = 1 [a.a.c] y = 1 [a.a.d] z = 1 """ doc = parse(content) assert doc.as_string() == content assert doc["a"]["a"] == {"b": {"x": 1}, "c": {"y": 1}, "d": {"z": 1}} def test_out_of_order_tables_are_still_dicts(): content = """ [a.a] key = "value" [a.b] [a.a.c] """ doc = parse(content) assert isinstance(doc["a"], dict) assert isinstance(doc["a"]["a"], dict) table = doc["a"]["a"] assert "key" in table assert "c" in table assert table.get("key") == "value" assert {} == table.get("c") assert table.get("d") is None assert table.get("d", "foo") == "foo" assert table.setdefault("d", "bar") == "bar" assert table["d"] == "bar" assert table.pop("key") == "value" assert "key" not in table assert table.pop("missing", default="baz") == "baz" with pytest.raises(KeyError): table.pop("missing") def test_string_output_order_is_preserved_for_out_of_order_tables(): content = """ [tool.poetry] name = "foo" [tool.poetry.dependencies] python = "^3.6" bar = "^1.0" [build-system] requires = ["poetry-core"] backend = "poetry.core.masonry.api" [tool.other] a = "b" """ doc = parse(content) constraint = tomlkit.inline_table() constraint["version"] = "^1.0" doc["tool"]["poetry"]["dependencies"]["bar"] = constraint assert doc["tool"]["poetry"]["dependencies"]["bar"]["version"] == "^1.0" expected = """ [tool.poetry] name = "foo" [tool.poetry.dependencies] python = "^3.6" bar = {version = "^1.0"} [build-system] requires = ["poetry-core"] backend = "poetry.core.masonry.api" [tool.other] a = "b" """ assert expected == doc.as_string() def test_remove_from_out_of_order_table(): content = """[a] x = 1 [c] z = 3 [a.b] y = 2 """ document = parse(content) del document["a"]["b"] assert ( document.as_string() == """[a] x = 1 [c] z = 3 """ ) assert json.dumps(document) == '{"a": {"x": 1}, "c": {"z": 3}}' def test_update_nested_out_of_order_table(): doc = parse("""\ [root1.root2.a.b.c] value = 2 [WALRUS] goo = "gjob" [root1.root2.x] value = 4 """) doc["root1"]["root2"]["a"].add("tmp", "hi") assert ( doc.as_string() == """\ [root1.root2.a] tmp = "hi" [root1.root2.a.b.c] value = 2 [WALRUS] goo = "gjob" [root1.root2.x] value = 4 """ ) def test_updating_nested_value_keeps_correct_indent(): content = """ [Key1] [key1.Key2] Value1 = 10 Value2 = 30 """ doc = parse(content) doc["key1"]["Key2"]["Value1"] = 20 expected = """ [Key1] [key1.Key2] Value1 = 20 Value2 = 30 """ assert doc.as_string() == expected def test_repr(): content = """ namespace.key1 = "value1" namespace.key2 = "value2" [tool.poetry.foo] option = "test" [tool.poetry.bar] option = "test" inline = {"foo" = "bar", "bar" = "baz"} """ doc = parse(content) assert ( repr(doc) == "{'namespace': {'key1': 'value1', 'key2': 'value2'}, 'tool': {'poetry': {'foo': {'option': 'test'}, 'bar': {'option': 'test', 'inline': {'foo': 'bar', 'bar': 'baz'}}}}}" ) assert ( repr(doc["tool"]) == "{'poetry': {'foo': {'option': 'test'}, 'bar': {'option': 'test', 'inline': {'foo': 'bar', 'bar': 'baz'}}}}" ) assert repr(doc["namespace"]) == "{'key1': 'value1', 'key2': 'value2'}" def test_deepcopy(): content = """ [tool] name = "foo" [tool.project.section] option = "test" """ doc = parse(content) copied = copy.deepcopy(doc) assert copied == doc assert copied.as_string() == content def test_move_table(): content = """a = 1 [x] a = 1 [y] b = 1 """ doc = parse(content) doc["a"] = doc.pop("x") doc["z"] = doc.pop("y") assert ( doc.as_string() == """[a] a = 1 [z] b = 1 """ ) def test_replace_with_table(): content = """a = 1 b = 2 c = 3 """ doc = parse(content) doc["b"] = {"foo": "bar"} assert ( doc.as_string() == """a = 1 c = 3 [b] foo = "bar" """ ) def test_replace_table_with_value(): content = """[foo] a = 1 [bar] b = 2 """ doc = parse(content) doc["bar"] = 42 assert ( doc.as_string() == """bar = 42 [foo] a = 1 """ ) def test_replace_preserve_sep(): content = """a = 1 [foo] b = "what" """ doc = parse(content) doc["a"] = 2 doc["foo"]["b"] = "how" assert ( doc.as_string() == """a = 2 [foo] b = "how" """ ) def test_replace_with_table_of_nested(): example = """\ [a] x = 1 [a.b] y = 2 """ doc = parse(dedent(example)) doc["c"] = doc.pop("a") expected = """\ [c] x = 1 [c.b] y = 2 """ assert doc.as_string().strip() == dedent(expected).strip() def test_replace_with_aot_of_nested(): example = """\ [a] x = 1 [[a.b]] y = 2 [[a.b]] [a.b.c] z = 2 [[a.b.c.d]] w = 2 """ doc = parse(dedent(example)) doc["f"] = doc.pop("a") expected = """\ [f] x = 1 [[f.b]] y = 2 [[f.b]] [f.b.c] z = 2 [[f.b.c.d]] w = 2 """ assert doc.as_string().strip() == dedent(expected).strip() def test_replace_with_comment(): content = 'a = "1"' doc = parse(content) a = tomlkit.item(int(doc["a"])) a.comment("`a` should be an int") doc["a"] = a expected = "a = 1 # `a` should be an int" assert doc.as_string() == expected content = 'a = "1, 2, 3"' doc = parse(content) a = tomlkit.array() a.comment("`a` should be an array") for x in doc["a"].split(","): a.append(int(x.strip())) doc["a"] = a expected = "a = [1, 2, 3] # `a` should be an array" assert doc.as_string() == expected doc = parse(content) a = tomlkit.inline_table() a.comment("`a` should be an inline-table") for x in doc["a"].split(","): i = int(x.strip()) a.append(chr(ord("a") + i - 1), i) doc["a"] = a expected = "a = {a = 1, b = 2, c = 3} # `a` should be an inline-table" assert doc.as_string() == expected def test_no_spurious_whitespaces(): content = """\ [x] a = 1 [y] b = 2 """ doc = parse(dedent(content)) doc["z"] = doc.pop("y") expected = """\ [x] a = 1 [z] b = 2 """ assert doc.as_string() == dedent(expected) doc["w"] = {"c": 3} expected = """\ [x] a = 1 [z] b = 2 [w] c = 3 """ assert doc.as_string() == dedent(expected) doc = parse(dedent(content)) del doc["x"] doc["z"] = {"c": 3} expected = """\ [y] b = 2 [z] c = 3 """ assert doc.as_string() == dedent(expected) def test_pop_add_whitespace_and_insert_table_work_togheter(): content = """\ a = 1 b = 2 c = 3 d = 4 """ doc = parse(dedent(content)) doc.pop("a") doc.pop("b") doc.add(ws("\n")) doc["e"] = {"foo": "bar"} expected = """\ c = 3 d = 4 [e] foo = "bar" """ text = doc.as_string() out = parse(text) assert out["d"] == 4 assert "d" not in out["e"] assert text == dedent(expected) def test_add_newline_before_super_table(): doc = document() doc["a"] = 1 doc["b"] = {"c": {}} doc["d"] = {"e": {}} expected = """\ a = 1 [b.c] [d.e] """ assert doc.as_string() == dedent(expected) def test_remove_item_from_super_table(): content = """\ [hello.one] a = 1 [hello.two] b = 1 """ doc = parse(dedent(content)) del doc["hello"]["two"] expected = """\ [hello.one] a = 1 """ assert doc.as_string() == dedent(expected) def test_nested_table_update_display_name(): content = """\ [parent] [parent.foo] x = 1 """ doc = parse(dedent(content)) sub = """\ [foo] y = 2 [bar] z = 3 """ doc["parent"].update(parse(dedent(sub))) expected = """\ [parent] [parent.foo] y = 2 [parent.bar] z = 3 """ assert doc.as_string() == dedent(expected) def test_build_table_with_dotted_key(): doc = tomlkit.document() data = { "a.b.c": 1, "a.b.d": 2, "a": {"c": {"foo": "bar"}}, "a.d.e": 3, } for key, value in data.items(): if "." not in key: doc.append(key, value) else: doc.append(tomlkit.key(key.split(".")), value) expected = """\ a.b.c = 1 a.b.d = 2 a.d.e = 3 [a.c] foo = "bar" """ assert doc.as_string() == expected assert json.loads(json.dumps(doc)) == { "a": {"b": {"c": 1, "d": 2}, "d": {"e": 3}, "c": {"foo": "bar"}} } def test_parse_subtables_no_extra_indent(): expected = """\ [a] [a.b.c] foo = 1 [a.b.d] bar = 2 """ doc = parse(expected) assert doc.as_string() == expected def test_item_preserves_the_order(): t = tomlkit.inline_table() t.update({"a": 1, "b": 2}) doc = {"name": "foo", "table": t, "age": 42} expected = """\ name = "foo" table = {a = 1, b = 2} age = 42 """ assert tomlkit.dumps(doc) == expected def test_delete_out_of_order_table_key(): content = """\ [foo] name = "foo" [bar.a.b] name = "bar-a-b" [foo.a] name = "foo-a" [bar.a] name = "bar-a" [baz] name = "baz" [bar.a.c] name = "bar-a-c" """ doc = parse(content) del doc["bar"]["a"] assert ( doc.as_string() == """\ [foo] name = "foo" [foo.a] name = "foo-a" [baz] name = "baz" """ ) def test_overwrite_out_of_order_table_key(): content = """\ [foo] name = "foo" [bar.a.b] name = "bar-a-b" [foo.a] name = "foo-a" [bar.a] name = "bar-a" [baz] name = "baz" [bar.a.c] name = "bar-a-c" """ doc = parse(content) doc["bar"]["a"] = {"name": "bar-a-updated"} assert ( doc.as_string() == """\ [foo] name = "foo" [bar.a] name = "bar-a-updated" [foo.a] name = "foo-a" [baz] name = "baz" """ ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_toml_file.py0000644000000000000000000000536614657064216014760 0ustar00import os from tomlkit.toml_document import TOMLDocument from tomlkit.toml_file import TOMLFile def test_toml_file(example): original_content = example("example") toml_file = os.path.join(os.path.dirname(__file__), "examples", "example.toml") toml = TOMLFile(toml_file) content = toml.read() assert isinstance(content, TOMLDocument) assert content["owner"]["organization"] == "GitHub" toml.write(content) try: with open(toml_file, encoding="utf-8") as f: assert original_content == f.read() finally: with open(toml_file, "w", encoding="utf-8", newline="") as f: assert f.write(original_content) def test_keep_old_eol(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\r\nb = 2\r\n") f = TOMLFile(toml_path) content = f.read() content["b"] = 3 f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\r\nb = 3\r\n" def test_keep_old_eol_2(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\nb = 2\n") f = TOMLFile(toml_path) content = f.read() content["b"] = 3 f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\nb = 3\n" def test_mixed_eol(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\r\nrb = 2\n") f = TOMLFile(toml_path) f.write(f.read()) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\r\nrb = 2\n" def test_consistent_eol(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\r\nb = 2\r\n") f = TOMLFile(toml_path) content = f.read() content["c"] = 3 f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\r\nb = 2\r\nc = 3\r\n" def test_consistent_eol_2(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\nb = 2\n") f = TOMLFile(toml_path) content = f.read() content["c"] = 3 content["c"].trivia.trail = "\r\n" f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\nb = 2\nc = 3\n" def test_default_eol_is_os_linesep(tmpdir): toml_path = str(tmpdir / "pyproject.toml") f = TOMLFile(toml_path) content = TOMLDocument() content.append("a", 1) content["a"].trivia.trail = "\n" content.append("b", 2) content["b"].trivia.trail = "\r\n" f.write(content) linesep = os.linesep.encode() with open(toml_path, "rb") as f: assert f.read() == b"a = 1" + linesep + b"b = 2" + linesep ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_toml_spec_tests.py0000644000000000000000000000660114657064216016206 0ustar00import json import os import re import pytest import yaml from tomlkit import parse from tomlkit._compat import decode from tomlkit._utils import parse_rfc3339 from tomlkit.exceptions import TOMLKitError IGNORED_TESTS = [] # The following tests trigger a RecursionError IGNORED_TESTS += ["qa-array-inline-nested-1000", "qa-table-inline-nested-1000"] # The following tests don't work due to time microseconds precision of the tests IGNORED_TESTS += ["spec-date-time-6", "spec-date-time-local-2", "spec-time-2"] # The following tests don't work due to nan always comparing to False IGNORED_TESTS += ["spec-float-13", "spec-float-14", "spec-float-15"] # The following tests don't work due to issues with th epyyaml library IGNORED_TESTS += ["spec-key-value-pair-9"] SPEC_TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-spec-tests") VALID_TESTS = sorted( os.path.basename(f).rsplit(".", 1)[0] for f in os.listdir(os.path.join(SPEC_TEST_DIR, "values")) if os.path.basename(f).rsplit(".", 1)[0] not in IGNORED_TESTS ) ERROR_TESTS = sorted( os.path.basename(f).rsplit(".", 1)[0] for f in os.listdir(os.path.join(SPEC_TEST_DIR, "errors")) if os.path.basename(f).rsplit(".", 1)[0] not in IGNORED_TESTS ) def to_bool(s): assert s in ["true", "false"] return s == "true" stypes = { "string": str, "bool": to_bool, "integer": int, "float": float, "datetime": parse_rfc3339, "datetime-local": parse_rfc3339, "date": parse_rfc3339, "time": parse_rfc3339, } loader = yaml.SafeLoader loader.add_implicit_resolver( "tag:yaml.org,2002:float", re.compile( """^(?: [-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+]?[0-9]+)? |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+) |\\.[0-9_]+(?:[eE][-+][0-9]+)? |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]* |[-+]?\\.(?:inf|Inf|INF) |\\.(?:nan|NaN|NAN))$""", re.X, ), list("-+0123456789."), ) def untag(value): if isinstance(value, list): return [untag(i) for i in value] elif "type" in value and "value" in value and len(value) == 2: if value["type"] in stypes: val = decode(value["value"]) return stypes[value["type"]](val) elif value["type"] == "array": return [untag(i) for i in value["value"]] else: raise Exception(f'Unsupported type {value["type"]}') else: return {k: untag(v) for k, v in value.items()} @pytest.mark.parametrize("test", VALID_TESTS) def test_valid_decode(test): toml_file = os.path.join(SPEC_TEST_DIR, "values", test + ".toml") yaml_file = os.path.join(SPEC_TEST_DIR, "values", test + ".yaml") with open(toml_file, encoding="utf-8") as f: toml_content = f.read() toml_val = parse(toml_content) if os.path.exists(yaml_file): with open(yaml_file, encoding="utf-8") as f: yaml_val = yaml.load(f.read(), Loader=loader) else: with open( os.path.join(SPEC_TEST_DIR, "values", test + ".json"), encoding="utf-8" ) as f: yaml_val = untag(json.loads(f.read())) assert toml_val == yaml_val assert toml_val.as_string() == toml_content @pytest.mark.parametrize("test", ERROR_TESTS) def test_invalid_decode(test): toml_file = os.path.join(SPEC_TEST_DIR, "errors", test + ".toml") with pytest.raises(TOMLKitError), open(toml_file, encoding="utf-8") as f: parse(f.read()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_toml_tests.py0000644000000000000000000000303014657064216015165 0ustar00import json import pytest from tomlkit import load from tomlkit import parse from tomlkit._compat import decode from tomlkit._utils import parse_rfc3339 from tomlkit.exceptions import TOMLKitError def to_bool(s): assert s in ["true", "false"] return s == "true" stypes = { "string": str, "bool": to_bool, "integer": int, "float": float, "datetime": parse_rfc3339, "datetime-local": parse_rfc3339, "date-local": parse_rfc3339, "time-local": parse_rfc3339, } def untag(value): if isinstance(value, list): return [untag(i) for i in value] elif "type" in value and "value" in value and len(value) == 2: if value["type"] in stypes: val = decode(value["value"]) return stypes[value["type"]](val) elif value["type"] == "array": return [untag(i) for i in value["value"]] else: raise Exception(f'Unsupported type {value["type"]}') else: return {k: untag(v) for k, v in value.items()} def test_valid_decode(valid_case): json_val = untag(json.loads(valid_case["json"])) toml_val = parse(valid_case["toml"]) assert toml_val == json_val assert toml_val.as_string() == valid_case["toml"] def test_invalid_decode(invalid_decode_case): with pytest.raises(TOMLKitError): parse(invalid_decode_case["toml"]) def test_invalid_encode(invalid_encode_case): with pytest.raises((TOMLKitError, UnicodeDecodeError)), open( invalid_encode_case, encoding="utf-8" ) as f: load(f) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_utils.py0000644000000000000000000000257214657064216014142 0ustar00from datetime import date from datetime import datetime as dt from datetime import time from datetime import timedelta as td from datetime import timezone as tz import pytest from tomlkit._utils import _utc from tomlkit._utils import parse_rfc3339 @pytest.mark.parametrize( "string, expected", [ ("1979-05-27T07:32:00", dt(1979, 5, 27, 7, 32, 0)), ("1979-05-27T07:32:00Z", dt(1979, 5, 27, 7, 32, 0, tzinfo=_utc)), ( "1979-05-27T07:32:00-07:00", dt(1979, 5, 27, 7, 32, 0, tzinfo=tz(td(seconds=-7 * 3600), "-07:00")), ), ( "1979-05-27T00:32:00.999999-07:00", dt( 1979, 5, 27, 0, 32, 0, 999999, tzinfo=tz(td(seconds=-7 * 3600), "-07:00"), ), ), ], ) def test_parse_rfc3339_datetime(string, expected): assert parse_rfc3339(string) == expected @pytest.mark.parametrize("string, expected", [("1979-05-27", date(1979, 5, 27))]) def test_parse_rfc3339_date(string, expected): assert parse_rfc3339(string) == expected @pytest.mark.parametrize( "string, expected", [("12:34:56", time(12, 34, 56)), ("12:34:56.123456", time(12, 34, 56, 123456))], ) def test_parse_rfc3339_time(string, expected): assert parse_rfc3339(string) == expected ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/test_write.py0000644000000000000000000000147414657064216014134 0ustar00from tomlkit import dumps from tomlkit import loads def test_write_backslash(): d = {"foo": "\\e\u25e6\r"} expected = """foo = "\\\\e\u25e6\\r" """ assert expected == dumps(d) assert loads(dumps(d))["foo"] == "\\e\u25e6\r" def test_escape_special_characters_in_key(): d = {"foo\nbar": "baz"} expected = '"foo\\nbar" = "baz"\n' assert expected == dumps(d) assert loads(dumps(d))["foo\nbar"] == "baz" def test_write_inline_table_in_nested_arrays(): d = {"foo": [[{"a": 1}]]} expected = "foo = [[{a = 1}]]\n" assert expected == dumps(d) assert loads(dumps(d))["foo"] == [[{"a": 1}]] def test_serialize_aot_with_nested_tables(): doc = {"a": [{"b": {"c": 1}}]} expected = """\ [[a]] [a.b] c = 1 """ assert dumps(doc) == expected assert loads(expected) == doc ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/.gitattributes0000644000000000000000000000010414657064216017314 0ustar00*.toml text=auto *.yaml text=auto values/spec-newline-*.toml binary ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/LICENSE0000644000000000000000000000134614657064216015437 0ustar00Copyright Rebecca Turner Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 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. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/README.md0000644000000000000000000000117614657064216015712 0ustar00These are the spec tests for TOML used by @iarna/toml. The errors folder contains TOML files that should cause a parser to report an error. The values folder contains TOML files and paired YAML or JSON files. The YAML files should parse to a structure that's deeply equal to the TOML structure. The JSON files match the patterns found in [BurntSushi 0.4 TOML tests](https://github.com/BurntSushi/toml-test#json-encoding). We introduce the following new types to match TOML 0.5.0: * _datetime-local_ - A datetime without a timezone. Floating. * _date_ - A date without any time component * _time_ - A time without any date component ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/array-of-tables-1.toml0000644000000000000000000000006714657064216021770 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/array-of-tables-2.toml0000644000000000000000000000027414657064216021771 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # This table conflicts with the previous table [fruit.variety] name = "granny smith" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/bare-key-1.toml0000644000000000000000000000001714657064216020472 0ustar00bare!key = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/bare-key-2.toml0000644000000000000000000000002114657064216020466 0ustar00barekey = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/bare-key-3.toml0000644000000000000000000000001114657064216020466 0ustar00barekey =././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/comment-control-1.toml0000644000000000000000000000001714657064216022113 0ustar00a = "null" # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/comment-control-2.toml0000644000000000000000000000002114657064216022107 0ustar00a = "ctrl-P" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/comment-control-3.toml0000644000000000000000000000002114657064216022110 0ustar00a = "ctrl-_" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/comment-control-4.toml0000644000000000000000000000001714657064216022116 0ustar00a = "0x7f" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/inline-table-imutable-1.toml0000644000000000000000000000010214657064216023131 0ustar00[product] type = { name = "Nail" } type.edible = false # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/inline-table-imutable-2.toml0000644000000000000000000000010214657064216023132 0ustar00[product] type.name = "Nail" type = { edible = false } # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/inline-table-trailing-comma.toml0000644000000000000000000000002514657064216024100 0ustar00abc = { abc = 123, } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/int-0-padded.toml0000644000000000000000000000001314657064216020777 0ustar00int = 0123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/int-signed-bin.toml0000644000000000000000000000001414657064216021441 0ustar00bin = +0b10 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/int-signed-hex.toml0000644000000000000000000000001414657064216021455 0ustar00hex = +0xab ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/int-signed-oct.toml0000644000000000000000000000001414657064216021456 0ustar00oct = +0o23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/key-value-pair-1.toml0000644000000000000000000000002014657064216021620 0ustar00key = # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/key-value-pair-2.toml0000644000000000000000000000006014657064216021625 0ustar00first = "Tom" last = "Preston-Werner" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/multiple-dot-key.toml0000644000000000000000000000034114657064216022042 0ustar00# THE FOLLOWING IS INVALID # This defines the value of fruit.apple to be an integer. fruit.apple = 1 # But then this treats fruit.apple like it's a table. # You can't turn an integer into a table. fruit.apple.smooth = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/multiple-key.toml0000644000000000000000000000005714657064216021262 0ustar00# DO NOT DO THIS name = "Tom" name = "Pradyun" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/no-key-name.toml0000644000000000000000000000003314657064216020753 0ustar00= "no key name" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-control-1.toml0000644000000000000000000000001414657064216023033 0ustar00a = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-control-2.toml0000644000000000000000000000001614657064216023036 0ustar00a = "ctrl-P" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-control-3.toml0000644000000000000000000000001614657064216023037 0ustar00a = "ctrl-_" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-control-4.toml0000644000000000000000000000001414657064216023036 0ustar00a = "0x7f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-control-1.toml0000644000000000000000000000002014657064216025030 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-control-2.toml0000644000000000000000000000002014657064216025031 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-control-3.toml0000644000000000000000000000002014657064216025032 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-control-4.toml0000644000000000000000000000002014657064216025033 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-invalid-backslash.toml0000644000000000000000000000003414657064216026576 0ustar00a = """ foo \ \n bar""" ././@PaxHeader0000000000000000000000000000021300000000000010211 xustar00111 path=tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-1.toml 28 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-1.tom0000644000000000000000000000002514657064216030366 0ustar00a = """\UFFFFFFFF""" ././@PaxHeader0000000000000000000000000000021300000000000010211 xustar00111 path=tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-2.toml 28 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-2.tom0000644000000000000000000000002514657064216030367 0ustar00a = """\U00D80000""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-quotes.toml0000644000000000000000000000006214657064216024540 0ustar00str5 = """Here are three quotation marks: """.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-multiline-unknown-escape.toml0000644000000000000000000000001514657064216026153 0ustar00a = """\@""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-out-of-range-unicode-escape-1.toml0000644000000000000000000000002114657064216026536 0ustar00a = "\UFFFFFFFF" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-out-of-range-unicode-escape-2.toml0000644000000000000000000000002114657064216026537 0ustar00a = "\U00D80000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-basic-unknown-escape.toml0000644000000000000000000000001114657064216024147 0ustar00a = "\@" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-control-1.toml0000644000000000000000000000001414657064216023406 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-control-2.toml0000644000000000000000000000001414657064216023407 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-control-3.toml0000644000000000000000000000001414657064216023410 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-control-4.toml0000644000000000000000000000001414657064216023411 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-multiline-control-1.toml0000644000000000000000000000002014657064216025403 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-multiline-control-2.toml0000644000000000000000000000002014657064216025404 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-multiline-control-3.toml0000644000000000000000000000002014657064216025405 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-multiline-control-4.toml0000644000000000000000000000002014657064216025406 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/string-literal-multiline-quotes.toml0000644000000000000000000000011014657064216025105 0ustar00apos15 = '''Here are fifteen apostrophes: '''''''''''''''''' # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/table-1.toml0000644000000000000000000000010314657064216020056 0ustar00# DO NOT DO THIS [fruit] apple = "red" [fruit] orange = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/table-2.toml0000644000000000000000000000012114657064216020057 0ustar00# DO NOT DO THIS EITHER [fruit] apple = "red" [fruit.apple] texture = "smooth" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/table-3.toml0000644000000000000000000000011714657064216020065 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple] # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/table-4.toml0000644000000000000000000000012514657064216020065 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple.taste] # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/table-invalid-1.toml0000644000000000000000000000036214657064216021511 0ustar00[fruit.physical] # subtable, but to which parent element should it belong? color = "red" shape = "round" [[fruit]] # parser must throw an error upon discovering that "fruit" is # an array rather than a table name = "apple"././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/table-invalid-2.toml0000644000000000000000000000006714657064216021514 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/table-invalid-3.toml0000644000000000000000000000041114657064216021506 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # INVALID: This table conflicts with the previous array of tables [fruit.variety] name = "granny smith" [fruit.physical] color = "red" shape = "round" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/errors/table-invalid-4.toml0000644000000000000000000000040614657064216021513 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" [fruit.physical] color = "red" shape = "round" # INVALID: This array of tables conflicts with the previous table [[fruit.physical]] color = "green" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-array-inline-1000.toml0000644000000000000000000003133214657064216022173 0ustar00key = [ "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "end"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-array-inline-1000.yaml0000644000000000000000000002735614657064216022175 0ustar00key: - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - end ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-array-inline-nested-1000.toml0000644000000000000000000000373214657064216023456 0ustar00key = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-array-inline-nested-1000.yaml0000644000000000000000000000373314657064216023446 0ustar00key: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-key-literal-40kb.toml0000644000000000000000000011611714657064216022210 0ustar00'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' = 'long' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-key-literal-40kb.yaml0000644000000000000000000011612014657064216022171 0ustar00? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' : long ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-key-string-40kb.toml0000644000000000000000000011611714657064216022062 0ustar00"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in." = "long" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-key-string-40kb.yaml0000644000000000000000000011612014657064216022043 0ustar00? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' : long ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-scalar-literal-40kb.toml0000644000000000000000000011611514657064216022663 0ustar00long = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-scalar-literal-40kb.yaml0000644000000000000000000012016214657064216022647 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-scalar-literal-multiline-40kb.toml0000644000000000000000000011612114657064216024660 0ustar00long = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-scalar-literal-multiline-40kb.yaml0000644000000000000000000012030314657064216024644 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-scalar-string-40kb.toml0000644000000000000000000011611514657064216022535 0ustar00long = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-scalar-string-40kb.yaml0000644000000000000000000012016214657064216022521 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-scalar-string-multiline-40kb.toml0000644000000000000000000011612114657064216024532 0ustar00long = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0841956 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-scalar-string-multiline-40kb.yaml0000644000000000000000000012030314657064216024516 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-table-inline-1000.toml0000644000000000000000000004671114657064216022153 0ustar00key = { key1 = "abcdefg", key2 = "abcdefg", key3 = "abcdefg", key4 = "abcdefg", key5 = "abcdefg", key6 = "abcdefg", key7 = "abcdefg", key8 = "abcdefg", key9 = "abcdefg", key10 = "abcdefg", key11 = "abcdefg", key12 = "abcdefg", key13 = "abcdefg", key14 = "abcdefg", key15 = "abcdefg", key16 = "abcdefg", key17 = "abcdefg", key18 = "abcdefg", key19 = "abcdefg", key20 = "abcdefg", key21 = "abcdefg", key22 = "abcdefg", key23 = "abcdefg", key24 = "abcdefg", key25 = "abcdefg", key26 = "abcdefg", key27 = "abcdefg", key28 = "abcdefg", key29 = "abcdefg", key30 = "abcdefg", key31 = "abcdefg", key32 = "abcdefg", key33 = "abcdefg", key34 = "abcdefg", key35 = "abcdefg", key36 = "abcdefg", key37 = "abcdefg", key38 = "abcdefg", key39 = "abcdefg", key40 = "abcdefg", key41 = "abcdefg", key42 = "abcdefg", key43 = "abcdefg", key44 = "abcdefg", key45 = "abcdefg", key46 = "abcdefg", key47 = "abcdefg", key48 = "abcdefg", key49 = "abcdefg", key50 = "abcdefg", key51 = "abcdefg", key52 = "abcdefg", key53 = "abcdefg", key54 = "abcdefg", key55 = "abcdefg", key56 = "abcdefg", key57 = "abcdefg", key58 = "abcdefg", key59 = "abcdefg", key60 = "abcdefg", key61 = "abcdefg", key62 = "abcdefg", key63 = "abcdefg", key64 = "abcdefg", key65 = "abcdefg", key66 = "abcdefg", key67 = "abcdefg", key68 = "abcdefg", key69 = "abcdefg", key70 = "abcdefg", key71 = "abcdefg", key72 = "abcdefg", key73 = "abcdefg", key74 = "abcdefg", key75 = "abcdefg", key76 = "abcdefg", key77 = "abcdefg", key78 = "abcdefg", key79 = "abcdefg", key80 = "abcdefg", key81 = "abcdefg", key82 = "abcdefg", key83 = "abcdefg", key84 = "abcdefg", key85 = "abcdefg", key86 = "abcdefg", key87 = "abcdefg", key88 = "abcdefg", key89 = "abcdefg", key90 = "abcdefg", key91 = "abcdefg", key92 = "abcdefg", key93 = "abcdefg", key94 = "abcdefg", key95 = "abcdefg", key96 = "abcdefg", key97 = "abcdefg", key98 = "abcdefg", key99 = "abcdefg", key100 = "abcdefg", key101 = "abcdefg", key102 = "abcdefg", key103 = "abcdefg", key104 = "abcdefg", key105 = "abcdefg", key106 = "abcdefg", key107 = "abcdefg", key108 = "abcdefg", key109 = "abcdefg", key110 = "abcdefg", key111 = "abcdefg", key112 = "abcdefg", key113 = "abcdefg", key114 = "abcdefg", key115 = "abcdefg", key116 = "abcdefg", key117 = "abcdefg", key118 = "abcdefg", key119 = "abcdefg", key120 = "abcdefg", key121 = "abcdefg", key122 = "abcdefg", key123 = "abcdefg", key124 = "abcdefg", key125 = "abcdefg", key126 = "abcdefg", key127 = "abcdefg", key128 = "abcdefg", key129 = "abcdefg", key130 = "abcdefg", key131 = "abcdefg", key132 = "abcdefg", key133 = "abcdefg", key134 = "abcdefg", key135 = "abcdefg", key136 = "abcdefg", key137 = "abcdefg", key138 = "abcdefg", key139 = "abcdefg", key140 = "abcdefg", key141 = "abcdefg", key142 = "abcdefg", key143 = "abcdefg", key144 = "abcdefg", key145 = "abcdefg", key146 = "abcdefg", key147 = "abcdefg", key148 = "abcdefg", key149 = "abcdefg", key150 = "abcdefg", key151 = "abcdefg", key152 = "abcdefg", key153 = "abcdefg", key154 = "abcdefg", key155 = "abcdefg", key156 = "abcdefg", key157 = "abcdefg", key158 = "abcdefg", key159 = "abcdefg", key160 = "abcdefg", key161 = "abcdefg", key162 = "abcdefg", key163 = "abcdefg", key164 = "abcdefg", key165 = "abcdefg", key166 = "abcdefg", key167 = "abcdefg", key168 = "abcdefg", key169 = "abcdefg", key170 = "abcdefg", key171 = "abcdefg", key172 = "abcdefg", key173 = "abcdefg", key174 = "abcdefg", key175 = "abcdefg", key176 = "abcdefg", key177 = "abcdefg", key178 = "abcdefg", key179 = "abcdefg", key180 = "abcdefg", key181 = "abcdefg", key182 = "abcdefg", key183 = "abcdefg", key184 = "abcdefg", key185 = "abcdefg", key186 = "abcdefg", key187 = "abcdefg", key188 = "abcdefg", key189 = "abcdefg", key190 = "abcdefg", key191 = "abcdefg", key192 = "abcdefg", key193 = "abcdefg", key194 = "abcdefg", key195 = "abcdefg", key196 = "abcdefg", key197 = "abcdefg", key198 = "abcdefg", key199 = "abcdefg", key200 = "abcdefg", key201 = "abcdefg", key202 = "abcdefg", key203 = "abcdefg", key204 = "abcdefg", key205 = "abcdefg", key206 = "abcdefg", key207 = "abcdefg", key208 = "abcdefg", key209 = "abcdefg", key210 = "abcdefg", key211 = "abcdefg", key212 = "abcdefg", key213 = "abcdefg", key214 = "abcdefg", key215 = "abcdefg", key216 = "abcdefg", key217 = "abcdefg", key218 = "abcdefg", key219 = "abcdefg", key220 = "abcdefg", key221 = "abcdefg", key222 = "abcdefg", key223 = "abcdefg", key224 = "abcdefg", key225 = "abcdefg", key226 = "abcdefg", key227 = "abcdefg", key228 = "abcdefg", key229 = "abcdefg", key230 = "abcdefg", key231 = "abcdefg", key232 = "abcdefg", key233 = "abcdefg", key234 = "abcdefg", key235 = "abcdefg", key236 = "abcdefg", key237 = "abcdefg", key238 = "abcdefg", key239 = "abcdefg", key240 = "abcdefg", key241 = "abcdefg", key242 = "abcdefg", key243 = "abcdefg", key244 = "abcdefg", key245 = "abcdefg", key246 = "abcdefg", key247 = "abcdefg", key248 = "abcdefg", key249 = "abcdefg", key250 = "abcdefg", key251 = "abcdefg", key252 = "abcdefg", key253 = "abcdefg", key254 = "abcdefg", key255 = "abcdefg", key256 = "abcdefg", key257 = "abcdefg", key258 = "abcdefg", key259 = "abcdefg", key260 = "abcdefg", key261 = "abcdefg", key262 = "abcdefg", key263 = "abcdefg", key264 = "abcdefg", key265 = "abcdefg", key266 = "abcdefg", key267 = "abcdefg", key268 = "abcdefg", key269 = "abcdefg", key270 = "abcdefg", key271 = "abcdefg", key272 = "abcdefg", key273 = "abcdefg", key274 = "abcdefg", key275 = "abcdefg", key276 = "abcdefg", key277 = "abcdefg", key278 = "abcdefg", key279 = "abcdefg", key280 = "abcdefg", key281 = "abcdefg", key282 = "abcdefg", key283 = "abcdefg", key284 = "abcdefg", key285 = "abcdefg", key286 = "abcdefg", key287 = "abcdefg", key288 = "abcdefg", key289 = "abcdefg", key290 = "abcdefg", key291 = "abcdefg", key292 = "abcdefg", key293 = "abcdefg", key294 = "abcdefg", key295 = "abcdefg", key296 = "abcdefg", key297 = "abcdefg", key298 = "abcdefg", key299 = "abcdefg", key300 = "abcdefg", key301 = "abcdefg", key302 = "abcdefg", key303 = "abcdefg", key304 = "abcdefg", key305 = "abcdefg", key306 = "abcdefg", key307 = "abcdefg", key308 = "abcdefg", key309 = "abcdefg", key310 = "abcdefg", key311 = "abcdefg", key312 = "abcdefg", key313 = "abcdefg", key314 = "abcdefg", key315 = "abcdefg", key316 = "abcdefg", key317 = "abcdefg", key318 = "abcdefg", key319 = "abcdefg", key320 = "abcdefg", key321 = "abcdefg", key322 = "abcdefg", key323 = "abcdefg", key324 = "abcdefg", key325 = "abcdefg", key326 = "abcdefg", key327 = "abcdefg", key328 = "abcdefg", key329 = "abcdefg", key330 = "abcdefg", key331 = "abcdefg", key332 = "abcdefg", key333 = "abcdefg", key334 = "abcdefg", key335 = "abcdefg", key336 = "abcdefg", key337 = "abcdefg", key338 = "abcdefg", key339 = "abcdefg", key340 = "abcdefg", key341 = "abcdefg", key342 = "abcdefg", key343 = "abcdefg", key344 = "abcdefg", key345 = "abcdefg", key346 = "abcdefg", key347 = "abcdefg", key348 = "abcdefg", key349 = "abcdefg", key350 = "abcdefg", key351 = "abcdefg", key352 = "abcdefg", key353 = "abcdefg", key354 = "abcdefg", key355 = "abcdefg", key356 = "abcdefg", key357 = "abcdefg", key358 = "abcdefg", key359 = "abcdefg", key360 = "abcdefg", key361 = "abcdefg", key362 = "abcdefg", key363 = "abcdefg", key364 = "abcdefg", key365 = "abcdefg", key366 = "abcdefg", key367 = "abcdefg", key368 = "abcdefg", key369 = "abcdefg", key370 = "abcdefg", key371 = "abcdefg", key372 = "abcdefg", key373 = "abcdefg", key374 = "abcdefg", key375 = "abcdefg", key376 = "abcdefg", key377 = "abcdefg", key378 = "abcdefg", key379 = "abcdefg", key380 = "abcdefg", key381 = "abcdefg", key382 = "abcdefg", key383 = "abcdefg", key384 = "abcdefg", key385 = "abcdefg", key386 = "abcdefg", key387 = "abcdefg", key388 = "abcdefg", key389 = "abcdefg", key390 = "abcdefg", key391 = "abcdefg", key392 = "abcdefg", key393 = "abcdefg", key394 = "abcdefg", key395 = "abcdefg", key396 = "abcdefg", key397 = "abcdefg", key398 = "abcdefg", key399 = "abcdefg", key400 = "abcdefg", key401 = "abcdefg", key402 = "abcdefg", key403 = "abcdefg", key404 = "abcdefg", key405 = "abcdefg", key406 = "abcdefg", key407 = "abcdefg", key408 = "abcdefg", key409 = "abcdefg", key410 = "abcdefg", key411 = "abcdefg", key412 = "abcdefg", key413 = "abcdefg", key414 = "abcdefg", key415 = "abcdefg", key416 = "abcdefg", key417 = "abcdefg", key418 = "abcdefg", key419 = "abcdefg", key420 = "abcdefg", key421 = "abcdefg", key422 = "abcdefg", key423 = "abcdefg", key424 = "abcdefg", key425 = "abcdefg", key426 = "abcdefg", key427 = "abcdefg", key428 = "abcdefg", key429 = "abcdefg", key430 = "abcdefg", key431 = "abcdefg", key432 = "abcdefg", key433 = "abcdefg", key434 = "abcdefg", key435 = "abcdefg", key436 = "abcdefg", key437 = "abcdefg", key438 = "abcdefg", key439 = "abcdefg", key440 = "abcdefg", key441 = "abcdefg", key442 = "abcdefg", key443 = "abcdefg", key444 = "abcdefg", key445 = "abcdefg", key446 = "abcdefg", key447 = "abcdefg", key448 = "abcdefg", key449 = "abcdefg", key450 = "abcdefg", key451 = "abcdefg", key452 = "abcdefg", key453 = "abcdefg", key454 = "abcdefg", key455 = "abcdefg", key456 = "abcdefg", key457 = "abcdefg", key458 = "abcdefg", key459 = "abcdefg", key460 = "abcdefg", key461 = "abcdefg", key462 = "abcdefg", key463 = "abcdefg", key464 = "abcdefg", key465 = "abcdefg", key466 = "abcdefg", key467 = "abcdefg", key468 = "abcdefg", key469 = "abcdefg", key470 = "abcdefg", key471 = "abcdefg", key472 = "abcdefg", key473 = "abcdefg", key474 = "abcdefg", key475 = "abcdefg", key476 = "abcdefg", key477 = "abcdefg", key478 = "abcdefg", key479 = "abcdefg", key480 = "abcdefg", key481 = "abcdefg", key482 = "abcdefg", key483 = "abcdefg", key484 = "abcdefg", key485 = "abcdefg", key486 = "abcdefg", key487 = "abcdefg", key488 = "abcdefg", key489 = "abcdefg", key490 = "abcdefg", key491 = "abcdefg", key492 = "abcdefg", key493 = "abcdefg", key494 = "abcdefg", key495 = "abcdefg", key496 = "abcdefg", key497 = "abcdefg", key498 = "abcdefg", key499 = "abcdefg", key500 = "abcdefg", key501 = "abcdefg", key502 = "abcdefg", key503 = "abcdefg", key504 = "abcdefg", key505 = "abcdefg", key506 = "abcdefg", key507 = "abcdefg", key508 = "abcdefg", key509 = "abcdefg", key510 = "abcdefg", key511 = "abcdefg", key512 = "abcdefg", key513 = "abcdefg", key514 = "abcdefg", key515 = "abcdefg", key516 = "abcdefg", key517 = "abcdefg", key518 = "abcdefg", key519 = "abcdefg", key520 = "abcdefg", key521 = "abcdefg", key522 = "abcdefg", key523 = "abcdefg", key524 = "abcdefg", key525 = "abcdefg", key526 = "abcdefg", key527 = "abcdefg", key528 = "abcdefg", key529 = "abcdefg", key530 = "abcdefg", key531 = "abcdefg", key532 = "abcdefg", key533 = "abcdefg", key534 = "abcdefg", key535 = "abcdefg", key536 = "abcdefg", key537 = "abcdefg", key538 = "abcdefg", key539 = "abcdefg", key540 = "abcdefg", key541 = "abcdefg", key542 = "abcdefg", key543 = "abcdefg", key544 = "abcdefg", key545 = "abcdefg", key546 = "abcdefg", key547 = "abcdefg", key548 = "abcdefg", key549 = "abcdefg", key550 = "abcdefg", key551 = "abcdefg", key552 = "abcdefg", key553 = "abcdefg", key554 = "abcdefg", key555 = "abcdefg", key556 = "abcdefg", key557 = "abcdefg", key558 = "abcdefg", key559 = "abcdefg", key560 = "abcdefg", key561 = "abcdefg", key562 = "abcdefg", key563 = "abcdefg", key564 = "abcdefg", key565 = "abcdefg", key566 = "abcdefg", key567 = "abcdefg", key568 = "abcdefg", key569 = "abcdefg", key570 = "abcdefg", key571 = "abcdefg", key572 = "abcdefg", key573 = "abcdefg", key574 = "abcdefg", key575 = "abcdefg", key576 = "abcdefg", key577 = "abcdefg", key578 = "abcdefg", key579 = "abcdefg", key580 = "abcdefg", key581 = "abcdefg", key582 = "abcdefg", key583 = "abcdefg", key584 = "abcdefg", key585 = "abcdefg", key586 = "abcdefg", key587 = "abcdefg", key588 = "abcdefg", key589 = "abcdefg", key590 = "abcdefg", key591 = "abcdefg", key592 = "abcdefg", key593 = "abcdefg", key594 = "abcdefg", key595 = "abcdefg", key596 = "abcdefg", key597 = "abcdefg", key598 = "abcdefg", key599 = "abcdefg", key600 = "abcdefg", key601 = "abcdefg", key602 = "abcdefg", key603 = "abcdefg", key604 = "abcdefg", key605 = "abcdefg", key606 = "abcdefg", key607 = "abcdefg", key608 = "abcdefg", key609 = "abcdefg", key610 = "abcdefg", key611 = "abcdefg", key612 = "abcdefg", key613 = "abcdefg", key614 = "abcdefg", key615 = "abcdefg", key616 = "abcdefg", key617 = "abcdefg", key618 = "abcdefg", key619 = "abcdefg", key620 = "abcdefg", key621 = "abcdefg", key622 = "abcdefg", key623 = "abcdefg", key624 = "abcdefg", key625 = "abcdefg", key626 = "abcdefg", key627 = "abcdefg", key628 = "abcdefg", key629 = "abcdefg", key630 = "abcdefg", key631 = "abcdefg", key632 = "abcdefg", key633 = "abcdefg", key634 = "abcdefg", key635 = "abcdefg", key636 = "abcdefg", key637 = "abcdefg", key638 = "abcdefg", key639 = "abcdefg", key640 = "abcdefg", key641 = "abcdefg", key642 = "abcdefg", key643 = "abcdefg", key644 = "abcdefg", key645 = "abcdefg", key646 = "abcdefg", key647 = "abcdefg", key648 = "abcdefg", key649 = "abcdefg", key650 = "abcdefg", key651 = "abcdefg", key652 = "abcdefg", key653 = "abcdefg", key654 = "abcdefg", key655 = "abcdefg", key656 = "abcdefg", key657 = "abcdefg", key658 = "abcdefg", key659 = "abcdefg", key660 = "abcdefg", key661 = "abcdefg", key662 = "abcdefg", key663 = "abcdefg", key664 = "abcdefg", key665 = "abcdefg", key666 = "abcdefg", key667 = "abcdefg", key668 = "abcdefg", key669 = "abcdefg", key670 = "abcdefg", key671 = "abcdefg", key672 = "abcdefg", key673 = "abcdefg", key674 = "abcdefg", key675 = "abcdefg", key676 = "abcdefg", key677 = "abcdefg", key678 = "abcdefg", key679 = "abcdefg", key680 = "abcdefg", key681 = "abcdefg", key682 = "abcdefg", key683 = "abcdefg", key684 = "abcdefg", key685 = "abcdefg", key686 = "abcdefg", key687 = "abcdefg", key688 = "abcdefg", key689 = "abcdefg", key690 = "abcdefg", key691 = "abcdefg", key692 = "abcdefg", key693 = "abcdefg", key694 = "abcdefg", key695 = "abcdefg", key696 = "abcdefg", key697 = "abcdefg", key698 = "abcdefg", key699 = "abcdefg", key700 = "abcdefg", key701 = "abcdefg", key702 = "abcdefg", key703 = "abcdefg", key704 = "abcdefg", key705 = "abcdefg", key706 = "abcdefg", key707 = "abcdefg", key708 = "abcdefg", key709 = "abcdefg", key710 = "abcdefg", key711 = "abcdefg", key712 = "abcdefg", key713 = "abcdefg", key714 = "abcdefg", key715 = "abcdefg", key716 = "abcdefg", key717 = "abcdefg", key718 = "abcdefg", key719 = "abcdefg", key720 = "abcdefg", key721 = "abcdefg", key722 = "abcdefg", key723 = "abcdefg", key724 = "abcdefg", key725 = "abcdefg", key726 = "abcdefg", key727 = "abcdefg", key728 = "abcdefg", key729 = "abcdefg", key730 = "abcdefg", key731 = "abcdefg", key732 = "abcdefg", key733 = "abcdefg", key734 = "abcdefg", key735 = "abcdefg", key736 = "abcdefg", key737 = "abcdefg", key738 = "abcdefg", key739 = "abcdefg", key740 = "abcdefg", key741 = "abcdefg", key742 = "abcdefg", key743 = "abcdefg", key744 = "abcdefg", key745 = "abcdefg", key746 = "abcdefg", key747 = "abcdefg", key748 = "abcdefg", key749 = "abcdefg", key750 = "abcdefg", key751 = "abcdefg", key752 = "abcdefg", key753 = "abcdefg", key754 = "abcdefg", key755 = "abcdefg", key756 = "abcdefg", key757 = "abcdefg", key758 = "abcdefg", key759 = "abcdefg", key760 = "abcdefg", key761 = "abcdefg", key762 = "abcdefg", key763 = "abcdefg", key764 = "abcdefg", key765 = "abcdefg", key766 = "abcdefg", key767 = "abcdefg", key768 = "abcdefg", key769 = "abcdefg", key770 = "abcdefg", key771 = "abcdefg", key772 = "abcdefg", key773 = "abcdefg", key774 = "abcdefg", key775 = "abcdefg", key776 = "abcdefg", key777 = "abcdefg", key778 = "abcdefg", key779 = "abcdefg", key780 = "abcdefg", key781 = "abcdefg", key782 = "abcdefg", key783 = "abcdefg", key784 = "abcdefg", key785 = "abcdefg", key786 = "abcdefg", key787 = "abcdefg", key788 = "abcdefg", key789 = "abcdefg", key790 = "abcdefg", key791 = "abcdefg", key792 = "abcdefg", key793 = "abcdefg", key794 = "abcdefg", key795 = "abcdefg", key796 = "abcdefg", key797 = "abcdefg", key798 = "abcdefg", key799 = "abcdefg", key800 = "abcdefg", key801 = "abcdefg", key802 = "abcdefg", key803 = "abcdefg", key804 = "abcdefg", key805 = "abcdefg", key806 = "abcdefg", key807 = "abcdefg", key808 = "abcdefg", key809 = "abcdefg", key810 = "abcdefg", key811 = "abcdefg", key812 = "abcdefg", key813 = "abcdefg", key814 = "abcdefg", key815 = "abcdefg", key816 = "abcdefg", key817 = "abcdefg", key818 = "abcdefg", key819 = "abcdefg", key820 = "abcdefg", key821 = "abcdefg", key822 = "abcdefg", key823 = "abcdefg", key824 = "abcdefg", key825 = "abcdefg", key826 = "abcdefg", key827 = "abcdefg", key828 = "abcdefg", key829 = "abcdefg", key830 = "abcdefg", key831 = "abcdefg", key832 = "abcdefg", key833 = "abcdefg", key834 = "abcdefg", key835 = "abcdefg", key836 = "abcdefg", key837 = "abcdefg", key838 = "abcdefg", key839 = "abcdefg", key840 = "abcdefg", key841 = "abcdefg", key842 = "abcdefg", key843 = "abcdefg", key844 = "abcdefg", key845 = "abcdefg", key846 = "abcdefg", key847 = "abcdefg", key848 = "abcdefg", key849 = "abcdefg", key850 = "abcdefg", key851 = "abcdefg", key852 = "abcdefg", key853 = "abcdefg", key854 = "abcdefg", key855 = "abcdefg", key856 = "abcdefg", key857 = "abcdefg", key858 = "abcdefg", key859 = "abcdefg", key860 = "abcdefg", key861 = "abcdefg", key862 = "abcdefg", key863 = "abcdefg", key864 = "abcdefg", key865 = "abcdefg", key866 = "abcdefg", key867 = "abcdefg", key868 = "abcdefg", key869 = "abcdefg", key870 = "abcdefg", key871 = "abcdefg", key872 = "abcdefg", key873 = "abcdefg", key874 = "abcdefg", key875 = "abcdefg", key876 = "abcdefg", key877 = "abcdefg", key878 = "abcdefg", key879 = "abcdefg", key880 = "abcdefg", key881 = "abcdefg", key882 = "abcdefg", key883 = "abcdefg", key884 = "abcdefg", key885 = "abcdefg", key886 = "abcdefg", key887 = "abcdefg", key888 = "abcdefg", key889 = "abcdefg", key890 = "abcdefg", key891 = "abcdefg", key892 = "abcdefg", key893 = "abcdefg", key894 = "abcdefg", key895 = "abcdefg", key896 = "abcdefg", key897 = "abcdefg", key898 = "abcdefg", key899 = "abcdefg", key900 = "abcdefg", key901 = "abcdefg", key902 = "abcdefg", key903 = "abcdefg", key904 = "abcdefg", key905 = "abcdefg", key906 = "abcdefg", key907 = "abcdefg", key908 = "abcdefg", key909 = "abcdefg", key910 = "abcdefg", key911 = "abcdefg", key912 = "abcdefg", key913 = "abcdefg", key914 = "abcdefg", key915 = "abcdefg", key916 = "abcdefg", key917 = "abcdefg", key918 = "abcdefg", key919 = "abcdefg", key920 = "abcdefg", key921 = "abcdefg", key922 = "abcdefg", key923 = "abcdefg", key924 = "abcdefg", key925 = "abcdefg", key926 = "abcdefg", key927 = "abcdefg", key928 = "abcdefg", key929 = "abcdefg", key930 = "abcdefg", key931 = "abcdefg", key932 = "abcdefg", key933 = "abcdefg", key934 = "abcdefg", key935 = "abcdefg", key936 = "abcdefg", key937 = "abcdefg", key938 = "abcdefg", key939 = "abcdefg", key940 = "abcdefg", key941 = "abcdefg", key942 = "abcdefg", key943 = "abcdefg", key944 = "abcdefg", key945 = "abcdefg", key946 = "abcdefg", key947 = "abcdefg", key948 = "abcdefg", key949 = "abcdefg", key950 = "abcdefg", key951 = "abcdefg", key952 = "abcdefg", key953 = "abcdefg", key954 = "abcdefg", key955 = "abcdefg", key956 = "abcdefg", key957 = "abcdefg", key958 = "abcdefg", key959 = "abcdefg", key960 = "abcdefg", key961 = "abcdefg", key962 = "abcdefg", key963 = "abcdefg", key964 = "abcdefg", key965 = "abcdefg", key966 = "abcdefg", key967 = "abcdefg", key968 = "abcdefg", key969 = "abcdefg", key970 = "abcdefg", key971 = "abcdefg", key972 = "abcdefg", key973 = "abcdefg", key974 = "abcdefg", key975 = "abcdefg", key976 = "abcdefg", key977 = "abcdefg", key978 = "abcdefg", key979 = "abcdefg", key980 = "abcdefg", key981 = "abcdefg", key982 = "abcdefg", key983 = "abcdefg", key984 = "abcdefg", key985 = "abcdefg", key986 = "abcdefg", key987 = "abcdefg", key988 = "abcdefg", key989 = "abcdefg", key990 = "abcdefg", key991 = "abcdefg", key992 = "abcdefg", key993 = "abcdefg", key994 = "abcdefg", key995 = "abcdefg", key996 = "abcdefg", key997 = "abcdefg", key998 = "abcdefg", key999 = "abcdefg", key1000 = "abcdefg", end = true} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-table-inline-1000.yaml0000644000000000000000000004276714657064216022151 0ustar00key: key1: abcdefg key2: abcdefg key3: abcdefg key4: abcdefg key5: abcdefg key6: abcdefg key7: abcdefg key8: abcdefg key9: abcdefg key10: abcdefg key11: abcdefg key12: abcdefg key13: abcdefg key14: abcdefg key15: abcdefg key16: abcdefg key17: abcdefg key18: abcdefg key19: abcdefg key20: abcdefg key21: abcdefg key22: abcdefg key23: abcdefg key24: abcdefg key25: abcdefg key26: abcdefg key27: abcdefg key28: abcdefg key29: abcdefg key30: abcdefg key31: abcdefg key32: abcdefg key33: abcdefg key34: abcdefg key35: abcdefg key36: abcdefg key37: abcdefg key38: abcdefg key39: abcdefg key40: abcdefg key41: abcdefg key42: abcdefg key43: abcdefg key44: abcdefg key45: abcdefg key46: abcdefg key47: abcdefg key48: abcdefg key49: abcdefg key50: abcdefg key51: abcdefg key52: abcdefg key53: abcdefg key54: abcdefg key55: abcdefg key56: abcdefg key57: abcdefg key58: abcdefg key59: abcdefg key60: abcdefg key61: abcdefg key62: abcdefg key63: abcdefg key64: abcdefg key65: abcdefg key66: abcdefg key67: abcdefg key68: abcdefg key69: abcdefg key70: abcdefg key71: abcdefg key72: abcdefg key73: abcdefg key74: abcdefg key75: abcdefg key76: abcdefg key77: abcdefg key78: abcdefg key79: abcdefg key80: abcdefg key81: abcdefg key82: abcdefg key83: abcdefg key84: abcdefg key85: abcdefg key86: abcdefg key87: abcdefg key88: abcdefg key89: abcdefg key90: abcdefg key91: abcdefg key92: abcdefg key93: abcdefg key94: abcdefg key95: abcdefg key96: abcdefg key97: abcdefg key98: abcdefg key99: abcdefg key100: abcdefg key101: abcdefg key102: abcdefg key103: abcdefg key104: abcdefg key105: abcdefg key106: abcdefg key107: abcdefg key108: abcdefg key109: abcdefg key110: abcdefg key111: abcdefg key112: abcdefg key113: abcdefg key114: abcdefg key115: abcdefg key116: abcdefg key117: abcdefg key118: abcdefg key119: abcdefg key120: abcdefg key121: abcdefg key122: abcdefg key123: abcdefg key124: abcdefg key125: abcdefg key126: abcdefg key127: abcdefg key128: abcdefg key129: abcdefg key130: abcdefg key131: abcdefg key132: abcdefg key133: abcdefg key134: abcdefg key135: abcdefg key136: abcdefg key137: abcdefg key138: abcdefg key139: abcdefg key140: abcdefg key141: abcdefg key142: abcdefg key143: abcdefg key144: abcdefg key145: abcdefg key146: abcdefg key147: abcdefg key148: abcdefg key149: abcdefg key150: abcdefg key151: abcdefg key152: abcdefg key153: abcdefg key154: abcdefg key155: abcdefg key156: abcdefg key157: abcdefg key158: abcdefg key159: abcdefg key160: abcdefg key161: abcdefg key162: abcdefg key163: abcdefg key164: abcdefg key165: abcdefg key166: abcdefg key167: abcdefg key168: abcdefg key169: abcdefg key170: abcdefg key171: abcdefg key172: abcdefg key173: abcdefg key174: abcdefg key175: abcdefg key176: abcdefg key177: abcdefg key178: abcdefg key179: abcdefg key180: abcdefg key181: abcdefg key182: abcdefg key183: abcdefg key184: abcdefg key185: abcdefg key186: abcdefg key187: abcdefg key188: abcdefg key189: abcdefg key190: abcdefg key191: abcdefg key192: abcdefg key193: abcdefg key194: abcdefg key195: abcdefg key196: abcdefg key197: abcdefg key198: abcdefg key199: abcdefg key200: abcdefg key201: abcdefg key202: abcdefg key203: abcdefg key204: abcdefg key205: abcdefg key206: abcdefg key207: abcdefg key208: abcdefg key209: abcdefg key210: abcdefg key211: abcdefg key212: abcdefg key213: abcdefg key214: abcdefg key215: abcdefg key216: abcdefg key217: abcdefg key218: abcdefg key219: abcdefg key220: abcdefg key221: abcdefg key222: abcdefg key223: abcdefg key224: abcdefg key225: abcdefg key226: abcdefg key227: abcdefg key228: abcdefg key229: abcdefg key230: abcdefg key231: abcdefg key232: abcdefg key233: abcdefg key234: abcdefg key235: abcdefg key236: abcdefg key237: abcdefg key238: abcdefg key239: abcdefg key240: abcdefg key241: abcdefg key242: abcdefg key243: abcdefg key244: abcdefg key245: abcdefg key246: abcdefg key247: abcdefg key248: abcdefg key249: abcdefg key250: abcdefg key251: abcdefg key252: abcdefg key253: abcdefg key254: abcdefg key255: abcdefg key256: abcdefg key257: abcdefg key258: abcdefg key259: abcdefg key260: abcdefg key261: abcdefg key262: abcdefg key263: abcdefg key264: abcdefg key265: abcdefg key266: abcdefg key267: abcdefg key268: abcdefg key269: abcdefg key270: abcdefg key271: abcdefg key272: abcdefg key273: abcdefg key274: abcdefg key275: abcdefg key276: abcdefg key277: abcdefg key278: abcdefg key279: abcdefg key280: abcdefg key281: abcdefg key282: abcdefg key283: abcdefg key284: abcdefg key285: abcdefg key286: abcdefg key287: abcdefg key288: abcdefg key289: abcdefg key290: abcdefg key291: abcdefg key292: abcdefg key293: abcdefg key294: abcdefg key295: abcdefg key296: abcdefg key297: abcdefg key298: abcdefg key299: abcdefg key300: abcdefg key301: abcdefg key302: abcdefg key303: abcdefg key304: abcdefg key305: abcdefg key306: abcdefg key307: abcdefg key308: abcdefg key309: abcdefg key310: abcdefg key311: abcdefg key312: abcdefg key313: abcdefg key314: abcdefg key315: abcdefg key316: abcdefg key317: abcdefg key318: abcdefg key319: abcdefg key320: abcdefg key321: abcdefg key322: abcdefg key323: abcdefg key324: abcdefg key325: abcdefg key326: abcdefg key327: abcdefg key328: abcdefg key329: abcdefg key330: abcdefg key331: abcdefg key332: abcdefg key333: abcdefg key334: abcdefg key335: abcdefg key336: abcdefg key337: abcdefg key338: abcdefg key339: abcdefg key340: abcdefg key341: abcdefg key342: abcdefg key343: abcdefg key344: abcdefg key345: abcdefg key346: abcdefg key347: abcdefg key348: abcdefg key349: abcdefg key350: abcdefg key351: abcdefg key352: abcdefg key353: abcdefg key354: abcdefg key355: abcdefg key356: abcdefg key357: abcdefg key358: abcdefg key359: abcdefg key360: abcdefg key361: abcdefg key362: abcdefg key363: abcdefg key364: abcdefg key365: abcdefg key366: abcdefg key367: abcdefg key368: abcdefg key369: abcdefg key370: abcdefg key371: abcdefg key372: abcdefg key373: abcdefg key374: abcdefg key375: abcdefg key376: abcdefg key377: abcdefg key378: abcdefg key379: abcdefg key380: abcdefg key381: abcdefg key382: abcdefg key383: abcdefg key384: abcdefg key385: abcdefg key386: abcdefg key387: abcdefg key388: abcdefg key389: abcdefg key390: abcdefg key391: abcdefg key392: abcdefg key393: abcdefg key394: abcdefg key395: abcdefg key396: abcdefg key397: abcdefg key398: abcdefg key399: abcdefg key400: abcdefg key401: abcdefg key402: abcdefg key403: abcdefg key404: abcdefg key405: abcdefg key406: abcdefg key407: abcdefg key408: abcdefg key409: abcdefg key410: abcdefg key411: abcdefg key412: abcdefg key413: abcdefg key414: abcdefg key415: abcdefg key416: abcdefg key417: abcdefg key418: abcdefg key419: abcdefg key420: abcdefg key421: abcdefg key422: abcdefg key423: abcdefg key424: abcdefg key425: abcdefg key426: abcdefg key427: abcdefg key428: abcdefg key429: abcdefg key430: abcdefg key431: abcdefg key432: abcdefg key433: abcdefg key434: abcdefg key435: abcdefg key436: abcdefg key437: abcdefg key438: abcdefg key439: abcdefg key440: abcdefg key441: abcdefg key442: abcdefg key443: abcdefg key444: abcdefg key445: abcdefg key446: abcdefg key447: abcdefg key448: abcdefg key449: abcdefg key450: abcdefg key451: abcdefg key452: abcdefg key453: abcdefg key454: abcdefg key455: abcdefg key456: abcdefg key457: abcdefg key458: abcdefg key459: abcdefg key460: abcdefg key461: abcdefg key462: abcdefg key463: abcdefg key464: abcdefg key465: abcdefg key466: abcdefg key467: abcdefg key468: abcdefg key469: abcdefg key470: abcdefg key471: abcdefg key472: abcdefg key473: abcdefg key474: abcdefg key475: abcdefg key476: abcdefg key477: abcdefg key478: abcdefg key479: abcdefg key480: abcdefg key481: abcdefg key482: abcdefg key483: abcdefg key484: abcdefg key485: abcdefg key486: abcdefg key487: abcdefg key488: abcdefg key489: abcdefg key490: abcdefg key491: abcdefg key492: abcdefg key493: abcdefg key494: abcdefg key495: abcdefg key496: abcdefg key497: abcdefg key498: abcdefg key499: abcdefg key500: abcdefg key501: abcdefg key502: abcdefg key503: abcdefg key504: abcdefg key505: abcdefg key506: abcdefg key507: abcdefg key508: abcdefg key509: abcdefg key510: abcdefg key511: abcdefg key512: abcdefg key513: abcdefg key514: abcdefg key515: abcdefg key516: abcdefg key517: abcdefg key518: abcdefg key519: abcdefg key520: abcdefg key521: abcdefg key522: abcdefg key523: abcdefg key524: abcdefg key525: abcdefg key526: abcdefg key527: abcdefg key528: abcdefg key529: abcdefg key530: abcdefg key531: abcdefg key532: abcdefg key533: abcdefg key534: abcdefg key535: abcdefg key536: abcdefg key537: abcdefg key538: abcdefg key539: abcdefg key540: abcdefg key541: abcdefg key542: abcdefg key543: abcdefg key544: abcdefg key545: abcdefg key546: abcdefg key547: abcdefg key548: abcdefg key549: abcdefg key550: abcdefg key551: abcdefg key552: abcdefg key553: abcdefg key554: abcdefg key555: abcdefg key556: abcdefg key557: abcdefg key558: abcdefg key559: abcdefg key560: abcdefg key561: abcdefg key562: abcdefg key563: abcdefg key564: abcdefg key565: abcdefg key566: abcdefg key567: abcdefg key568: abcdefg key569: abcdefg key570: abcdefg key571: abcdefg key572: abcdefg key573: abcdefg key574: abcdefg key575: abcdefg key576: abcdefg key577: abcdefg key578: abcdefg key579: abcdefg key580: abcdefg key581: abcdefg key582: abcdefg key583: abcdefg key584: abcdefg key585: abcdefg key586: abcdefg key587: abcdefg key588: abcdefg key589: abcdefg key590: abcdefg key591: abcdefg key592: abcdefg key593: abcdefg key594: abcdefg key595: abcdefg key596: abcdefg key597: abcdefg key598: abcdefg key599: abcdefg key600: abcdefg key601: abcdefg key602: abcdefg key603: abcdefg key604: abcdefg key605: abcdefg key606: abcdefg key607: abcdefg key608: abcdefg key609: abcdefg key610: abcdefg key611: abcdefg key612: abcdefg key613: abcdefg key614: abcdefg key615: abcdefg key616: abcdefg key617: abcdefg key618: abcdefg key619: abcdefg key620: abcdefg key621: abcdefg key622: abcdefg key623: abcdefg key624: abcdefg key625: abcdefg key626: abcdefg key627: abcdefg key628: abcdefg key629: abcdefg key630: abcdefg key631: abcdefg key632: abcdefg key633: abcdefg key634: abcdefg key635: abcdefg key636: abcdefg key637: abcdefg key638: abcdefg key639: abcdefg key640: abcdefg key641: abcdefg key642: abcdefg key643: abcdefg key644: abcdefg key645: abcdefg key646: abcdefg key647: abcdefg key648: abcdefg key649: abcdefg key650: abcdefg key651: abcdefg key652: abcdefg key653: abcdefg key654: abcdefg key655: abcdefg key656: abcdefg key657: abcdefg key658: abcdefg key659: abcdefg key660: abcdefg key661: abcdefg key662: abcdefg key663: abcdefg key664: abcdefg key665: abcdefg key666: abcdefg key667: abcdefg key668: abcdefg key669: abcdefg key670: abcdefg key671: abcdefg key672: abcdefg key673: abcdefg key674: abcdefg key675: abcdefg key676: abcdefg key677: abcdefg key678: abcdefg key679: abcdefg key680: abcdefg key681: abcdefg key682: abcdefg key683: abcdefg key684: abcdefg key685: abcdefg key686: abcdefg key687: abcdefg key688: abcdefg key689: abcdefg key690: abcdefg key691: abcdefg key692: abcdefg key693: abcdefg key694: abcdefg key695: abcdefg key696: abcdefg key697: abcdefg key698: abcdefg key699: abcdefg key700: abcdefg key701: abcdefg key702: abcdefg key703: abcdefg key704: abcdefg key705: abcdefg key706: abcdefg key707: abcdefg key708: abcdefg key709: abcdefg key710: abcdefg key711: abcdefg key712: abcdefg key713: abcdefg key714: abcdefg key715: abcdefg key716: abcdefg key717: abcdefg key718: abcdefg key719: abcdefg key720: abcdefg key721: abcdefg key722: abcdefg key723: abcdefg key724: abcdefg key725: abcdefg key726: abcdefg key727: abcdefg key728: abcdefg key729: abcdefg key730: abcdefg key731: abcdefg key732: abcdefg key733: abcdefg key734: abcdefg key735: abcdefg key736: abcdefg key737: abcdefg key738: abcdefg key739: abcdefg key740: abcdefg key741: abcdefg key742: abcdefg key743: abcdefg key744: abcdefg key745: abcdefg key746: abcdefg key747: abcdefg key748: abcdefg key749: abcdefg key750: abcdefg key751: abcdefg key752: abcdefg key753: abcdefg key754: abcdefg key755: abcdefg key756: abcdefg key757: abcdefg key758: abcdefg key759: abcdefg key760: abcdefg key761: abcdefg key762: abcdefg key763: abcdefg key764: abcdefg key765: abcdefg key766: abcdefg key767: abcdefg key768: abcdefg key769: abcdefg key770: abcdefg key771: abcdefg key772: abcdefg key773: abcdefg key774: abcdefg key775: abcdefg key776: abcdefg key777: abcdefg key778: abcdefg key779: abcdefg key780: abcdefg key781: abcdefg key782: abcdefg key783: abcdefg key784: abcdefg key785: abcdefg key786: abcdefg key787: abcdefg key788: abcdefg key789: abcdefg key790: abcdefg key791: abcdefg key792: abcdefg key793: abcdefg key794: abcdefg key795: abcdefg key796: abcdefg key797: abcdefg key798: abcdefg key799: abcdefg key800: abcdefg key801: abcdefg key802: abcdefg key803: abcdefg key804: abcdefg key805: abcdefg key806: abcdefg key807: abcdefg key808: abcdefg key809: abcdefg key810: abcdefg key811: abcdefg key812: abcdefg key813: abcdefg key814: abcdefg key815: abcdefg key816: abcdefg key817: abcdefg key818: abcdefg key819: abcdefg key820: abcdefg key821: abcdefg key822: abcdefg key823: abcdefg key824: abcdefg key825: abcdefg key826: abcdefg key827: abcdefg key828: abcdefg key829: abcdefg key830: abcdefg key831: abcdefg key832: abcdefg key833: abcdefg key834: abcdefg key835: abcdefg key836: abcdefg key837: abcdefg key838: abcdefg key839: abcdefg key840: abcdefg key841: abcdefg key842: abcdefg key843: abcdefg key844: abcdefg key845: abcdefg key846: abcdefg key847: abcdefg key848: abcdefg key849: abcdefg key850: abcdefg key851: abcdefg key852: abcdefg key853: abcdefg key854: abcdefg key855: abcdefg key856: abcdefg key857: abcdefg key858: abcdefg key859: abcdefg key860: abcdefg key861: abcdefg key862: abcdefg key863: abcdefg key864: abcdefg key865: abcdefg key866: abcdefg key867: abcdefg key868: abcdefg key869: abcdefg key870: abcdefg key871: abcdefg key872: abcdefg key873: abcdefg key874: abcdefg key875: abcdefg key876: abcdefg key877: abcdefg key878: abcdefg key879: abcdefg key880: abcdefg key881: abcdefg key882: abcdefg key883: abcdefg key884: abcdefg key885: abcdefg key886: abcdefg key887: abcdefg key888: abcdefg key889: abcdefg key890: abcdefg key891: abcdefg key892: abcdefg key893: abcdefg key894: abcdefg key895: abcdefg key896: abcdefg key897: abcdefg key898: abcdefg key899: abcdefg key900: abcdefg key901: abcdefg key902: abcdefg key903: abcdefg key904: abcdefg key905: abcdefg key906: abcdefg key907: abcdefg key908: abcdefg key909: abcdefg key910: abcdefg key911: abcdefg key912: abcdefg key913: abcdefg key914: abcdefg key915: abcdefg key916: abcdefg key917: abcdefg key918: abcdefg key919: abcdefg key920: abcdefg key921: abcdefg key922: abcdefg key923: abcdefg key924: abcdefg key925: abcdefg key926: abcdefg key927: abcdefg key928: abcdefg key929: abcdefg key930: abcdefg key931: abcdefg key932: abcdefg key933: abcdefg key934: abcdefg key935: abcdefg key936: abcdefg key937: abcdefg key938: abcdefg key939: abcdefg key940: abcdefg key941: abcdefg key942: abcdefg key943: abcdefg key944: abcdefg key945: abcdefg key946: abcdefg key947: abcdefg key948: abcdefg key949: abcdefg key950: abcdefg key951: abcdefg key952: abcdefg key953: abcdefg key954: abcdefg key955: abcdefg key956: abcdefg key957: abcdefg key958: abcdefg key959: abcdefg key960: abcdefg key961: abcdefg key962: abcdefg key963: abcdefg key964: abcdefg key965: abcdefg key966: abcdefg key967: abcdefg key968: abcdefg key969: abcdefg key970: abcdefg key971: abcdefg key972: abcdefg key973: abcdefg key974: abcdefg key975: abcdefg key976: abcdefg key977: abcdefg key978: abcdefg key979: abcdefg key980: abcdefg key981: abcdefg key982: abcdefg key983: abcdefg key984: abcdefg key985: abcdefg key986: abcdefg key987: abcdefg key988: abcdefg key989: abcdefg key990: abcdefg key991: abcdefg key992: abcdefg key993: abcdefg key994: abcdefg key995: abcdefg key996: abcdefg key997: abcdefg key998: abcdefg key999: abcdefg key1000: abcdefg end: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-table-inline-nested-1000.toml0000644000000000000000000001751214657064216023430 0ustar00key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/qa-table-inline-nested-1000.yaml0000644000000000000000000365467114657064216023437 0ustar00key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-1.toml0000644000000000000000000000002714657064216021025 0ustar00integers = [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-1.yaml0000644000000000000000000000002614657064216021013 0ustar00integers: [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-2.toml0000644000000000000000000000004614657064216021027 0ustar00colors = [ "red", "yellow", "green" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-2.yaml0000644000000000000000000000004514657064216021015 0ustar00colors: [ "red", "yellow", "green" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-3.toml0000644000000000000000000000005614657064216021031 0ustar00nested_array_of_int = [ [ 1, 2 ], [3, 4, 5] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-3.yaml0000644000000000000000000000005514657064216021017 0ustar00nested_array_of_int: [ [ 1, 2 ], [3, 4, 5] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-4.toml0000644000000000000000000000010314657064216021023 0ustar00string_array = [ "all", 'strings', """are the same""", '''type'''] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-4.yaml0000644000000000000000000000007314657064216021020 0ustar00string_array: [ "all", "strings", "are the same", "type" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-5.toml0000644000000000000000000000006314657064216021031 0ustar00nested_mixed_array = [ [ 1, 2 ], ["a", "b", "c"] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-5.yaml0000644000000000000000000000006214657064216021017 0ustar00nested_mixed_array: [ [ 1, 2 ], ["a", "b", "c"] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0881958 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-7.toml0000644000000000000000000000003214657064216021027 0ustar00integers2 = [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-7.yaml0000644000000000000000000000003114657064216021015 0ustar00integers2: [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-8.toml0000644000000000000000000000004714657064216021036 0ustar00integers3 = [ 1, 2, # this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-8.yaml0000644000000000000000000000004614657064216021024 0ustar00integers3: [ 1, 2, # this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-mixed-number-types.toml0000644000000000000000000000004514657064216024423 0ustar00numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-mixed-number-types.yaml0000644000000000000000000000004414657064216024411 0ustar00numbers: [ 0.1, 0.2, 0.5, 1, 2, 5 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-more-mixed-types.toml0000644000000000000000000000021214657064216024071 0ustar00contributors = [ "Foo Bar ", { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" } ]././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-more-mixed-types.yaml0000644000000000000000000000020714657064216024064 0ustar00contributors: [ "Foo Bar ", { name: "Baz Qux", email: "bazqux@example.com", url: "https://example.com/bazqux" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-of-tables-1.toml0000644000000000000000000000016614657064216022703 0ustar00[[products]] name = "Hammer" sku = 738594937 [[products]] [[products]] name = "Nail" sku = 284758393 color = "gray" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-of-tables-1.yaml0000644000000000000000000000015114657064216022664 0ustar00products: [ {name: "Hammer", sku: 738594937}, {}, {name: "Nail", sku: 284758393, color: "gray" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-of-tables-2.toml0000644000000000000000000000037414657064216022705 0ustar00[[fruit]] name = "apple" [fruit.physical] color = "red" shape = "round" [[fruit.variety]] name = "red delicious" [[fruit.variety]] name = "granny smith" [[fruit]] name = "banana" [[fruit.variety]] name = "plantain" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-of-tables-2.yaml0000644000000000000000000000041014657064216022663 0ustar00fruit: [ { name: "apple", physical: { color: "red", shape: "round" }, variety: [ { name: "red delicious" }, { name: "granny smith" } ] }, { name: "banana", variety: [ { name: "plantain" } ] } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-of-tables-3.toml0000644000000000000000000000015514657064216022703 0ustar00points = [ { x = 1, y = 2, z = 3 }, { x = 7, y = 8, z = 9 }, { x = 2, y = 4, z = 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-array-of-tables-3.yaml0000644000000000000000000000014114657064216022665 0ustar00points: [ { x: 1, y: 2, z: 3 }, { x: 7, y: 8, z: 9 }, { x: 2, y: 4, z: 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-boolean-1.toml0000644000000000000000000000001514657064216021323 0ustar00bool1 = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-boolean-1.yaml0000644000000000000000000000001414657064216021311 0ustar00bool1: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-boolean-2.toml0000644000000000000000000000001614657064216021325 0ustar00bool1 = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-boolean-2.yaml0000644000000000000000000000001514657064216021313 0ustar00bool1: false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-case-sensitive.toml0000644000000000000000000000005614657064216022475 0ustar00# TOML is case sensitive. abc = 123 ABC = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-case-sensitive.yaml0000644000000000000000000000002214657064216022455 0ustar00abc: 123 ABC: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-comment-mid-array.toml0000644000000000000000000000017014657064216023075 0ustar00# eol commetns can go anywhere abc = [ # this is valid 123,#as is this 456 #so is this ]# and this # here too ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-comment-mid-array.yaml0000644000000000000000000000016714657064216023072 0ustar00# eol commetns can go anywhere abc: [ # this is valid 123,#as is this 456 #so is this ]# and this # here too ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-comment-mid-string.toml0000644000000000000000000000004414657064216023265 0ustar00another = "# This is not a comment" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-comment-mid-string.yaml0000644000000000000000000000004314657064216023253 0ustar00another: "# This is not a comment" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-comment-tab.toml0000644000000000000000000000020614657064216021756 0ustar00# This is a full-line comment with a tab in the middle key = "value" # This is a commen with a tab in the middle at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-comment-tab.yaml0000644000000000000000000000001514657064216021743 0ustar00key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-comment.toml0000644000000000000000000000012514657064216021212 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-comment.yaml0000644000000000000000000000012414657064216021200 0ustar00# This is a full-line comment key: "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-local-1.json0000644000000000000000000000010114657064216021703 0ustar00{ "ld1": { "type": "date", "value": "1979-05-27" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-local-1.toml0000644000000000000000000000002114657064216021706 0ustar00ld1 = 1979-05-27 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-1.toml0000644000000000000000000000003414657064216021556 0ustar00odt1 = 1979-05-27T07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-1.yaml0000644000000000000000000000003314657064216021544 0ustar00odt1: 1979-05-27T07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-2.toml0000644000000000000000000000004114657064216021555 0ustar00odt2 = 1979-05-27T00:32:00-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-2.yaml0000644000000000000000000000004014657064216021543 0ustar00odt2: 1979-05-27T00:32:00-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-3.toml0000644000000000000000000000005014657064216021556 0ustar00odt3 = 1979-05-27T00:32:00.999999-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-3.yaml0000644000000000000000000000004714657064216021553 0ustar00odt3: 1979-05-27T00:32:00.999999-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-4.toml0000644000000000000000000000003414657064216021561 0ustar00odt4 = 1979-05-27 07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-4.yaml0000644000000000000000000000003314657064216021547 0ustar00odt4: 1979-05-27 07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-5.toml0000644000000000000000000000004014657064216021557 0ustar00odt5 = 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-5.yaml0000644000000000000000000000003714657064216021554 0ustar00odt5: 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-6.toml0000644000000000000000000000004114657064216021561 0ustar00odt6 = 1979-05-27T07:32:00.1239Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-6.yaml0000644000000000000000000000003714657064216021555 0ustar00odt6: 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-local-1.json0000644000000000000000000000013114657064216022642 0ustar00{ "ldt1": { "type": "datetime-local", "value": "1979-05-27T07:32:00.000" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-local-1.toml0000644000000000000000000000003314657064216022645 0ustar00ldt1 = 1979-05-27T07:32:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-local-2.json0000644000000000000000000000013114657064216022643 0ustar00{ "ldt2": { "type": "datetime-local", "value": "1979-05-27T00:32:00.999" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-date-time-local-2.toml0000644000000000000000000000004214657064216022646 0ustar00ldt2 = 1979-05-27T00:32:00.999999 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-dotted-keys-1.toml0000644000000000000000000000013414657064216022142 0ustar00name = "Orange" physical.color = "orange" physical.shape = "round" site."google.com" = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-dotted-keys-1.yaml0000644000000000000000000000012714657064216022133 0ustar00name: "Orange" physical: color: "orange" shape: "round" site: "google.com": true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-dotted-keys-2.toml0000644000000000000000000000001514657064216022141 0ustar00a . b = 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-dotted-keys-2.yaml0000644000000000000000000000001314657064216022126 0ustar00a: b: 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-dotted-keys-3.toml0000644000000000000000000000001614657064216022143 0ustar00a . b = 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-dotted-keys-3.yaml0000644000000000000000000000001314657064216022127 0ustar00a: b: 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-empty-key-name-1.toml0000644000000000000000000000005114657064216022546 0ustar00"" = "blank" # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-empty-key-name-1.yaml0000644000000000000000000000001414657064216022534 0ustar00"": "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-empty-key-name-2.toml0000644000000000000000000000005114657064216022547 0ustar00'' = "blank" # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-empty-key-name-2.yaml0000644000000000000000000000001414657064216022535 0ustar00"": "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-extend-dotted-object-1.toml0000644000000000000000000000021314657064216023720 0ustar00# This makes the key "fruit" into a table. fruit.apple.smooth = true # So then you can add to the table "fruit" like so: fruit.orange = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-extend-dotted-object-1.yaml0000644000000000000000000000005514657064216023713 0ustar00fruit: apple: smooth: true orange: 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-extend-dotted-object-2.toml0000644000000000000000000000023414657064216023724 0ustar00# VALID BUT DISCOURAGED apple.type = "fruit" orange.type = "fruit" apple.skin = "thin" orange.skin = "thick" apple.color = "red" orange.color = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-extend-dotted-object-2.yaml0000644000000000000000000000016014657064216023711 0ustar00apple: type: "fruit" skin: "thin" color: "red" orange: type: "fruit" skin: "thick" color: "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-extend-dotted-object-3.toml0000644000000000000000000000022114657064216023721 0ustar00# RECOMMENDED apple.type = "fruit" apple.skin = "thin" apple.color = "red" orange.type = "fruit" orange.skin = "thick" orange.color = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-extend-dotted-object-3.yaml0000644000000000000000000000016014657064216023712 0ustar00apple: type: "fruit" skin: "thin" color: "red" orange: type: "fruit" skin: "thick" color: "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-1.toml0000644000000000000000000000001414657064216021010 0ustar00flt1 = +1.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-1.yaml0000644000000000000000000000001214657064216020775 0ustar00flt1: 1.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-10.toml0000644000000000000000000000003714657064216021075 0ustar00sf1 = inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-10.yaml0000644000000000000000000000003714657064216021064 0ustar00sf1: .inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-11.toml0000644000000000000000000000003714657064216021076 0ustar00sf2 = +inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-11.yaml0000644000000000000000000000003714657064216021065 0ustar00sf2: .inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-12.toml0000644000000000000000000000003714657064216021077 0ustar00sf2 = -inf # negative infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-12.yaml0000644000000000000000000000004014657064216021060 0ustar00sf2: -.inf # negative infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-13.toml0000644000000000000000000000010214657064216021071 0ustar00sf4 = nan # actual sNaN/qNaN encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-13.yaml0000644000000000000000000000010214657064216021060 0ustar00sf4: .NAN # actual sNaN/qNaN encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-14.toml0000644000000000000000000000003314657064216021075 0ustar00sf5 = +nan # same as `nan` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-14.yaml0000644000000000000000000000001214657064216021061 0ustar00sf5: .nan ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-15.toml0000644000000000000000000000007714657064216021106 0ustar00sf6 = -nan # valid, actual encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-15.yaml0000644000000000000000000000001214657064216021062 0ustar00sf6: .NAN ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-2.toml0000644000000000000000000000001614657064216021013 0ustar00flt2 = 3.1415 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-2.yaml0000644000000000000000000000001514657064216021001 0ustar00flt2: 3.1415 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-3.toml0000644000000000000000000000001514657064216021013 0ustar00flt3 = -0.01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-3.yaml0000644000000000000000000000001414657064216021001 0ustar00flt3: -0.01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-4.toml0000644000000000000000000000001514657064216021014 0ustar00flt4 = 5e+22 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-4.yaml0000644000000000000000000000001414657064216021002 0ustar00flt4: 5e+22 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-5.toml0000644000000000000000000000001414657064216021014 0ustar00flt5 = 1e06 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-5.yaml0000644000000000000000000000001214657064216021001 0ustar00flt5: 1e6 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-6.toml0000644000000000000000000000001514657064216021016 0ustar00flt6 = -2E-2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-6.yaml0000644000000000000000000000001414657064216021004 0ustar00flt6: -2E-2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-7.toml0000644000000000000000000000002114657064216021014 0ustar00flt7 = 6.626e-34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-7.yaml0000644000000000000000000000002014657064216021002 0ustar00flt7: 6.626e-34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-8.toml0000644000000000000000000000003314657064216021020 0ustar00flt8 = 224_617.445_991_228 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-8.yaml0000644000000000000000000000003114657064216021005 0ustar00flt8: 224_617.445_991_228././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-9.toml0000644000000000000000000000001414657064216021020 0ustar00flt9 = -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-float-9.yaml0000644000000000000000000000001314657064216021006 0ustar00flt9: -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-1.toml0000644000000000000000000000001314657064216020474 0ustar00int1 = +99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-1.yaml0000644000000000000000000000001114657064216020461 0ustar00int1: 99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-2.toml0000644000000000000000000000001214657064216020474 0ustar00int2 = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-2.yaml0000644000000000000000000000001114657064216020462 0ustar00int2: 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-3.toml0000644000000000000000000000001114657064216020474 0ustar00int3 = 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-3.yaml0000644000000000000000000000001014657064216020462 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-3a.toml0000644000000000000000000000001214657064216020636 0ustar00int3 = +0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-3a.yaml0000644000000000000000000000001014657064216020623 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-3b.toml0000644000000000000000000000001214657064216020637 0ustar00int3 = -0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-3b.yaml0000644000000000000000000000001014657064216020624 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-4.toml0000644000000000000000000000001314657064216020477 0ustar00int4 = -17 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-4.yaml0000644000000000000000000000001214657064216020465 0ustar00int4: -17 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-5.toml0000644000000000000000000000001514657064216020502 0ustar00int5 = 1_000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-5.yaml0000644000000000000000000000001414657064216020470 0ustar00int5: 1_000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-6.toml0000644000000000000000000000002114657064216020500 0ustar00int6 = 5_349_221 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-6.yaml0000644000000000000000000000002014657064216020466 0ustar00int6: 5_349_221 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-7.toml0000644000000000000000000000005514657064216020510 0ustar00int7 = 1_2_3_4_5 # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-7.yaml0000644000000000000000000000005414657064216020476 0ustar00int7: 1_2_3_4_5 # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-bin1.toml0000644000000000000000000000002214657064216021165 0ustar00bin1 = 0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-bin1.yaml0000644000000000000000000000001214657064216021153 0ustar00bin1: 214 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-hex1.toml0000644000000000000000000000002214657064216021201 0ustar00hex1 = 0xDEADBEEF ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-hex1.yaml0000644000000000000000000000002114657064216021167 0ustar00hex1: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-hex2.toml0000644000000000000000000000002214657064216021202 0ustar00hex2 = 0xdeadbeef ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-hex2.yaml0000644000000000000000000000002114657064216021170 0ustar00hex2: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-hex3.toml0000644000000000000000000000002314657064216021204 0ustar00hex3 = 0xdead_beef ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-hex3.yaml0000644000000000000000000000002114657064216021171 0ustar00hex3: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-max.json0000644000000000000000000000010314657064216021117 0ustar00{ "max": {"type": "integer", "value": "9223372036854775807"} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-max.toml0000644000000000000000000000003614657064216021126 0ustar00max=9_223_372_036_854_775_807 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-min.json0000644000000000000000000000010414657064216021116 0ustar00{ "min": {"type": "integer", "value": "-9223372036854775808"} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-min.toml0000644000000000000000000000003714657064216021125 0ustar00min=-9_223_372_036_854_775_808 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-oct1.toml0000644000000000000000000000002214657064216021202 0ustar00oct1 = 0o01234567 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-oct1.yaml0000644000000000000000000000001514657064216021173 0ustar00oct1: 342391 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-oct2.toml0000644000000000000000000000006014657064216021205 0ustar00oct2 = 0o755 # useful for Unix file permissions ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-int-oct2.yaml0000644000000000000000000000001214657064216021171 0ustar00oct2: 493 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-1.toml0000644000000000000000000000001614657064216022540 0ustar00key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-1.yaml0000644000000000000000000000001514657064216022526 0ustar00key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-2.toml0000644000000000000000000000002314657064216022537 0ustar00bare_key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-2.yaml0000644000000000000000000000002214657064216022525 0ustar00bare_key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-3.toml0000644000000000000000000000002314657064216022540 0ustar00bare-key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-3.yaml0000644000000000000000000000002214657064216022526 0ustar00bare-key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-4.toml0000644000000000000000000000001714657064216022544 0ustar001234 = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0921957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-4.yaml0000644000000000000000000000002014657064216022525 0ustar00"1234": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-5.toml0000644000000000000000000000001514657064216022543 0ustar001234="value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-5.yaml0000644000000000000000000000002014657064216022526 0ustar00"1234": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-6.toml0000644000000000000000000000000414657064216022542 0ustar00-=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-6.yaml0000644000000000000000000000000614657064216022533 0ustar00"-": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-7.toml0000644000000000000000000000000414657064216022543 0ustar00_=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-7.yaml0000644000000000000000000000000614657064216022534 0ustar00"_": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-8.toml0000644000000000000000000000001414657064216022545 0ustar00-_-_-_-_-=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-8.yaml0000644000000000000000000000001614657064216022536 0ustar00"-_-_-_-_-": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-9.toml0000644000000000000000000000001714657064216022551 0ustar003.14159 = "pi" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-key-value-pair-9.yaml0000644000000000000000000000002114657064216022533 0ustar003: 14159: "pi" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-newline-1.toml0000644000000000000000000000002414657064216021345 0ustar00abc = 123 def = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-newline-1.yaml0000644000000000000000000000002214657064216021332 0ustar00abc: 123 def: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-newline-2.toml0000644000000000000000000000002614657064216021350 0ustar00abc = 123 def = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-newline-2.yaml0000644000000000000000000000002214657064216021333 0ustar00abc: 123 def: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-newline-3.toml0000644000000000000000000000003614657064216021352 0ustar00abc = 123 def = 456 ghi = 789././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-newline-3.yaml0000644000000000000000000000003314657064216021336 0ustar00abc: 123 def: 456 ghi: 789 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-quoted-basic-keys-1.toml0000644000000000000000000000002314657064216023234 0ustar00"ʎǝʞ" = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-quoted-basic-keys-1.yaml0000644000000000000000000000002214657064216023222 0ustar00"ʎǝʞ": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-quoted-literal-keys-1.toml0000644000000000000000000000003314657064216023610 0ustar00'quoted "value"' = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-quoted-literal-keys-1.yaml0000644000000000000000000000003214657064216023576 0ustar00'quoted "value"': "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-readme-example.toml0000644000000000000000000000104114657064216022434 0ustar00# This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" dob = 1979-05-27T07:32:00-08:00 # First class dates [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # Indentation (tabs and/or spaces) is allowed but not required [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-readme-example.yaml0000644000000000000000000000066014657064216022431 0ustar00# This is a TOML document. title: "TOML Example" owner: name: "Tom Preston-Werner" dob: 1979-05-27T07:32:00-08:00 # First class dates database: server: "192.168.1.1" ports: [ 8001, 8001, 8002 ] connection_max: 5000 enabled: true servers: alpha: ip: "10.0.0.1" dc: "eqdc10" beta: ip: "10.0.0.2" dc: "eqdc10" clients: data: [ ["gamma", "delta"], [1, 2] ] hosts: [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-1.toml0000644000000000000000000000005514657064216024275 0ustar00str1 = """ Roses are red Violets are blue""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-1.yaml0000644000000000000000000000005014657064216024257 0ustar00str1: "Roses are red\nViolets are blue" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-2.toml0000644000000000000000000000010614657064216024273 0ustar00str = """ The quick brown \ fox jumps over \ the lazy dog.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-2.yaml0000644000000000000000000000006414657064216024265 0ustar00str: "The quick brown fox jumps over the lazy dog." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-3.toml0000644000000000000000000000013114657064216024272 0ustar00str = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-3.yaml0000644000000000000000000000006414657064216024266 0ustar00str: "The quick brown fox jumps over the lazy dog." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-4.toml0000644000000000000000000000002614657064216024276 0ustar00a = """abc\ def""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-4.yaml0000644000000000000000000000001414657064216024262 0ustar00a: "abcdef" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-5.toml0000644000000000000000000000007114657064216024277 0ustar00ml-escaped-nl = """ foo \ bar \\ baz \\\ quux""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-5.yaml0000644000000000000000000000005414657064216024267 0ustar00ml-escaped-nl: " foo bar \\\n baz \\quux" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-6.toml0000644000000000000000000000007614657064216024305 0ustar00str4 = """Here are two quotation marks: "". Simple enough.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-6.yaml0000644000000000000000000000007114657064216024267 0ustar00str4: 'Here are two quotation marks: "". Simple enough.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-7.toml0000644000000000000000000000006314657064216024302 0ustar00str5 = """Here are three quotation marks: ""\".""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-7.yaml0000644000000000000000000000005514657064216024272 0ustar00str5: 'Here are three quotation marks: """.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-8.toml0000644000000000000000000000010514657064216024300 0ustar00str6 = """Here are fifteen quotation marks: ""\"""\"""\"""\"""\".""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-8.yaml0000644000000000000000000000007314657064216024273 0ustar00str6: 'Here are fifteen quotation marks: """"""""""""""".' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-9.toml0000644000000000000000000000010014657064216024274 0ustar00str7 = """"This," she said, "is just a pointless statement."""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-multiline-9.yaml0000644000000000000000000000007314657064216024274 0ustar00str7: '"This," she said, "is just a pointless statement."' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-tab-multiline.toml0000644000000000000000000000003214657064216024676 0ustar00str = """This is a tab""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-tab-multiline.yaml0000644000000000000000000000002614657064216024670 0ustar00str: "This is a\ttab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-tab.toml0000644000000000000000000000002614657064216022701 0ustar00str = "This is a tab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic-tab.yaml0000644000000000000000000000002614657064216022670 0ustar00str: "This is a\ttab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic.toml0000644000000000000000000000011314657064216022132 0ustar00str = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-basic.yaml0000644000000000000000000000011214657064216022120 0ustar00str: "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-1.toml0000644000000000000000000000001114657064216022444 0ustar00a = "\b" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-1.yaml0000644000000000000000000000001014657064216022432 0ustar00a: "\b" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-2.toml0000644000000000000000000000001114657064216022445 0ustar00a = "\t" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-2.yaml0000644000000000000000000000001014657064216022433 0ustar00a: "\t" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-3.toml0000644000000000000000000000001114657064216022446 0ustar00a = "\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-3.yaml0000644000000000000000000000001014657064216022434 0ustar00a: "\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-4.toml0000644000000000000000000000001114657064216022447 0ustar00a = "\f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-4.yaml0000644000000000000000000000001014657064216022435 0ustar00a: "\f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-5.toml0000644000000000000000000000001114657064216022450 0ustar00a = "\r" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-5.yaml0000644000000000000000000000001014657064216022436 0ustar00a: "\r" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-6.toml0000644000000000000000000000001114657064216022451 0ustar00a = "\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-6.yaml0000644000000000000000000000001014657064216022437 0ustar00a: "\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-7.toml0000644000000000000000000000001114657064216022452 0ustar00a = "\\" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-7.yaml0000644000000000000000000000001014657064216022440 0ustar00a: "\\" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-8.toml0000644000000000000000000000001514657064216022457 0ustar00a = "\u0000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-8.yaml0000644000000000000000000000001214657064216022443 0ustar00a: "\x00" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-9.toml0000644000000000000000000000002114657064216022455 0ustar00a = "\U00000000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-escape-9.yaml0000644000000000000000000000001214657064216022444 0ustar00a: "\x00" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-1.toml0000644000000000000000000000004714657064216022651 0ustar00winpath = 'C:\Users\nodejs\templates' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-1.yaml0000644000000000000000000000004514657064216022636 0ustar00winpath: 'C:\Users\nodejs\templates' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-2.toml0000644000000000000000000000005014657064216022644 0ustar00winpath2 = '\\ServerX\admin$\system32\' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-2.yaml0000644000000000000000000000004714657064216022641 0ustar00winpath2: '\\ServerX\admin$\system32\' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-3.toml0000644000000000000000000000004714657064216022653 0ustar00quoted = 'Tom "Dubs" Preston-Werner' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-3.yaml0000644000000000000000000000004414657064216022637 0ustar00quoted: 'Tom "Dubs" Preston-Werner' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-4.toml0000644000000000000000000000003014657064216022644 0ustar00regex = '<\i\c*\s*>' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-4.yaml0000644000000000000000000000002414657064216022636 0ustar00regex: '<\i\c*\s*>' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-multiline-1.toml0000644000000000000000000000005414657064216024647 0ustar00regex2 = '''I [dw]on't need \d{2} apples''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-multiline-1.yaml0000644000000000000000000000005014657064216024632 0ustar00regex2: "I [dw]on't need \\d{2} apples" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-multiline-2.toml0000644000000000000000000000014714657064216024653 0ustar00lines = ''' The first newline is trimmed in raw strings. All other whitespace is preserved. ''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-multiline-2.yaml0000644000000000000000000000014414657064216024637 0ustar00lines: "The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-multiline-3.toml0000644000000000000000000000010114657064216024642 0ustar00quot15 = '''Here are fifteen quotation marks: """""""""""""""''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-multiline-3.yaml0000644000000000000000000000007414657064216024642 0ustar00quot15: 'Here are fifteen quotation marks: """""""""""""""' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-multiline-4.toml0000644000000000000000000000006414657064216024653 0ustar00str = ''''That,' she said, 'is still pointless.'''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-string-literal-multiline-4.yaml0000644000000000000000000000005714657064216024644 0ustar00str: "'That,' she said, 'is still pointless.'" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-1.toml0000644000000000000000000000013014657064216020771 0ustar00[table-1] key1 = "some string" key2 = 123 [table-2] key1 = "another string" key2 = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-1.yaml0000644000000000000000000000013114657064216020761 0ustar00table-1: key1: "some string" key2: 123 table-2: key1: "another string" key2: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-2.toml0000644000000000000000000000004414657064216020776 0ustar00[dog."tater.man"] type.name = "pug" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-2.yaml0000644000000000000000000000006014657064216020763 0ustar00dog: "tater.man": type: name: "pug" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-3.toml0000644000000000000000000000001014657064216020770 0ustar00[a.b.c] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-3.yaml0000644000000000000000000000002214657064216020762 0ustar00a: b: c: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-4.toml0000644000000000000000000000004514657064216021001 0ustar00[ d.e.f ] # same as [d.e.f] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-4.yaml0000644000000000000000000000002214657064216020763 0ustar00d: e: f: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-5.toml0000644000000000000000000000004514657064216021002 0ustar00[ g . h . i ] # same as [g.h.i] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-5.yaml0000644000000000000000000000002214657064216020764 0ustar00g: h: i: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-6.toml0000644000000000000000000000005314657064216021002 0ustar00[ j . "ʞ" . 'l' ] # same as [j."ʞ".'l'] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-6.yaml0000644000000000000000000000002514657064216020770 0ustar00j: "ʞ": l: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-7.toml0000644000000000000000000000017014657064216021003 0ustar00# [x] you # [x.y] don't # [x.y.z] need these [x.y.z.w] # for this to work [x] # defining a super-table afterwards is ok ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-7.yaml0000644000000000000000000000003314657064216020770 0ustar00x: y: z: w: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-8.toml0000644000000000000000000000016414657064216021007 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple.texture] # you can add sub-tables smooth = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-8.yaml0000644000000000000000000000013614657064216020775 0ustar00fruit: apple: color: "red" taste: sweet: true texture: smooth: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-inline-1.toml0000644000000000000000000000006214657064216022251 0ustar00name = { first = "Tom", last = "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-inline-1.yaml0000644000000000000000000000005714657064216022244 0ustar00name: { first: "Tom", last: "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-inline-2.toml0000644000000000000000000000003114657064216022246 0ustar00point = { x = 1, y = 2 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-inline-2.yaml0000644000000000000000000000003114657064216022235 0ustar00point: { x: 1, y: 2 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-inline-3.toml0000644000000000000000000000004014657064216022247 0ustar00animal = { type.name = "pug" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table-inline-3.yaml0000644000000000000000000000004514657064216022243 0ustar00animal: { type: { name: "pug" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table.toml0000644000000000000000000000001014657064216020630 0ustar00[table] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-table.yaml0000644000000000000000000000001214657064216020621 0ustar00table: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-time-1.json0000644000000000000000000000010314657064216020636 0ustar00{ "lt1": { "type": "time", "value": "07:32:00.000" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-time-1.toml0000644000000000000000000000001714657064216020644 0ustar00lt1 = 07:32:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-time-2.json0000644000000000000000000000010314657064216020637 0ustar00{ "lt2": { "type": "time", "value": "00:32:00.999" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/toml-spec-tests/values/spec-time-2.toml0000644000000000000000000000002614657064216020645 0ustar00lt2 = 00:32:00.999999 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.4161978 tomlkit-0.13.2/tests/toml-test/.git0000644000000000000000000000005314657064216014075 0ustar00gitdir: ../../.git/modules/tests/toml-test ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/.github/workflows/test.yml0000644000000000000000000000137214657064217020416 0ustar00{ "name": "go test", "on": ["push", "pull_request"], "jobs": { "test": { "strategy": { "matrix": { "go-version": ["1.16.x"], "os": ["ubuntu-latest", "macos-latest", "windows-latest"] } }, "runs-on": "${{ matrix.os }}", "steps": [ { "name": "Install Go", "uses": "actions/setup-go@v2", "with": {"go-version": "${{ matrix.go-version }}"} }, { "name": "Checkout code", "uses": "actions/checkout@v2" }, { "name": "Test", "run": "go test -v ./..." }, { "name": "Install", "run": "go install -v ./cmd/toml-test" } ] } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/.gitignore0000644000000000000000000000002114657064217015275 0ustar00/dist /toml-test ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/.gogo-release0000644000000000000000000000005314657064217015664 0ustar00build_flags="$build_flags ./cmd/toml-test" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/COPYING0000644000000000000000000000206714657064217014354 0ustar00The MIT License (MIT) Copyright (c) 2018 TOML authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/README.md0000644000000000000000000002170114657064217014574 0ustar00`toml-test` is a language-agnostic test suite to verify the correctness of [TOML][t] parsers and writers. Tests are divided into two groups: "invalid" and "valid". Decoders or encoders that reject "invalid" tests pass the tests, and decoders that accept "valid" tests and output precisely what is expected pass the tests. The output format is JSON, described below. Both encoders and decoders share valid tests, except an encoder accepts JSON and outputs TOML rather than the reverse. The TOML representations are read with a blessed decoder and is compared. Encoders have their own set of invalid tests in the invalid-encoder directory. The JSON given to a TOML encoder is in the same format as the JSON that a TOML decoder should output. Compatible with TOML version [v1.0.0][v1]. [t]: https://toml.io [v1]: https://toml.io/en/v1.0.0 Installation ------------ There are binaries on the [release page][r]; these are statically compiled and should run in most environments. It's recommended you use a binary, or a tagged release if you build from source especially in CI environments. This prevents your tests from breaking on changes to tests in this tool. To compile from source you will need Go 1.16 or newer (older versions will *not* work): $ git clone https://github.com/BurntSushi/toml-test.git $ cd toml-test $ go build ./cmd/toml-test This will build a `./toml-test` binary. [r]: https://github.com/BurntSushi/toml-test/releases Usage ----- `toml-test` accepts an encoder or decoder as the first positional argument, for example: $ toml-test my-toml-decoder $ toml-test my-toml-encoder -encoder The `-encoder` flag is used to signal that this is an encoder rather than a decoder. For example, to run the tests against the Go TOML library: # Install my parser $ go install github.com/BurntSushi/toml/cmd/toml-test-decoder@master $ go install github.com/BurntSushi/toml/cmd/toml-test-encoder@master $ toml-test toml-test-decoder toml-test [toml-test-decoder]: using embeded tests: 278 passed $ toml-test -encoder toml-test-encoder toml-test [toml-test-encoder]: using embeded tests: 94 passed, 0 failed The default is to use the tests compiled in the binary; you can use `-testdir` to load tests from the filesystem. You can use `-run [name]` or `-skip [name]` to run or skip specific tests. Both flags can be given more than once and accept glob patterns: `-run 'valid/string/*'`. See `toml-test -help` for detailed usage. ### Implementing a decoder For your decoder to be compatible with `toml-test` it **must** satisfy the expected interface: - Your decoder **must** accept TOML data on `stdin` until EOF. - If the TOML data is invalid, your decoder **must** return with a non-zero exit, code indicating an error. - If the TOML data is valid, your decoder **must** output a JSON encoding of that data on `stdout` and return with a zero exit code indicating success. An example in pseudocode: toml_data = read_stdin() parsed_toml = decode_toml(toml_data) if error_parsing_toml(): print_error_to_stderr() exit(1) print_as_tagged_json(parsed_toml) exit(0) Details on the tagged JSON is explained below in "JSON encoding". ### Implementing an encoder For your encoder to be compatible with `toml-test`, it **must** satisfy the expected interface: - Your encoder **must** accept JSON data on `stdin` until EOF. - If the JSON data cannot be converted to a valid TOML representation, your encoder **must** return with a non-zero exit code indicating an error. - If the JSON data can be converted to a valid TOML representation, your encoder **must** output a TOML encoding of that data on `stdout` and return with a zero exit code indicating success. An example in pseudocode: json_data = read_stdin() parsed_json_with_tags = decode_json(json_data) if error_parsing_json(): print_error_to_stderr() exit(1) print_as_toml(parsed_json_with_tags) exit(0) JSON encoding ------------- The following JSON encoding applies equally to both encoders and decoders: - TOML tables correspond to JSON objects. - TOML table arrays correspond to JSON arrays. - TOML values correspond to a special JSON object of the form: `{"type": "{TTYPE}", "value": {TVALUE}}` In the above, `TTYPE` may be one of: - string - integer - float - bool - datetime - datetime-local - date-local - time-local `TVALUE` is always a JSON string. Empty hashes correspond to empty JSON objects (`{}`) and empty arrays correspond to empty JSON arrays (`[]`). Offset datetimes should be encoded in RFC 3339; Local datetimes should be encoded following RFC 3339 without the offset part. Local dates should be encoded as the date part of RFC 3339 and Local times as the time part. Examples: TOML JSON a = 42 {"type": "integer": "value": "42} --- [tbl] {"tbl": { a = 42 "a": {"type": "integer": "value": "42} }} --- a = ["a", 2] {"a": [ {"type": "string", "value": "1"}, {"type: "integer": "value": "2"} ]} Or a more complex example: ```toml best-day-ever = 1987-07-05T17:45:00Z [numtheory] boring = false perfection = [6, 28, 496] ``` And the JSON encoding expected by `toml-test` is: ```json { "best-day-ever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"}, "numtheory": { "boring": {"type": "bool", "value": "false"}, "perfection": [ {"type": "integer", "value": "6"}, {"type": "integer", "value": "28"}, {"type": "integer", "value": "496"} ] } } ``` Note that the only JSON values ever used are objects, arrays and strings. An example implementation can be found in the BurnSushi/toml: - [Add tags](https://github.com/BurntSushi/toml/blob/master/internal/tag/add.go) - [Remove tags](https://github.com/BurntSushi/toml/blob/master/internal/tag/rm.go) Assumptions of Truth -------------------- The following are taken as ground truths by `toml-test`: - All tests classified as `invalid` **are** invalid. - All tests classified as `valid` **are** valid. - All expected outputs in `valid/test-name.json` are exactly correct. - The Go standard library package `encoding/json` decodes JSON correctly. - When testing encoders, the TOML decoder at [BurntSushi/toml](https://github.com/BurntSushi/toml) is assumed to be correct. (Note that this assumption is not made when testing decoders!) Of particular note is that **no TOML decoder** is taken as ground truth when testing decoders. This means that most changes to the spec will only require an update of the tests in `toml-test`. (Bigger changes may require an adjustment of how two things are considered equal. Particularly if a new type of data is added.) Obviously, this advantage does not apply to testing TOML encoders since there must exist a TOML decoder that conforms to the specification in order to read the output of a TOML encoder. Adding tests ------------ `toml-test` was designed so that tests can be easily added and removed. As mentioned above, tests are split into two groups: invalid and valid tests. Invalid tests **only check if a decoder rejects invalid TOML data**. Or, in the case of testing encoders, invalid tests **only check if an encoder rejects an invalid representation of TOML** (e.g., a hetergeneous array). Therefore, all invalid tests should try to **test one thing and one thing only**. Invalid tests should be named after the fault it is trying to expose. Invalid tests for decoders are in the `tests/invalid` directory while invalid tests for encoders are in the `tests/invalid-encoder` directory. Valid tests check that a decoder accepts valid TOML data **and** that the parser has the correct representation of the TOML data. Therefore, valid tests need a JSON encoding in addition to the TOML data. The tests should be small enough that writing the JSON encoding by hand will not give you brain damage. The exact reverse is true when testing encoders. A valid test without either a `.json` or `.toml` file will automatically fail. If you have tests that you'd like to add, please submit a pull request. Why JSON? --------- In order for a language agnostic test suite to work, we need some kind of data exchange format. TOML cannot be used, as it would imply that a particular parser has a blessing of correctness. My decision to use JSON was not a careful one. It was based on expediency. The Go standard library has an excellent `encoding/json` package built in, which made it easy to compare JSON data. The problem with JSON is that the types in TOML are not in one-to-one correspondence with JSON. This is why every TOML value represented in JSON is tagged with a type annotation, as described above. YAML may be closer in correspondence with TOML, but I don't believe we should rely on that correspondence. Making things explicit with JSON means that writing tests is a little more cumbersome, but it also reduces the number of assumptions we need to make. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/cmd/toml-test/main.go0000644000000000000000000001075614657064217017273 0ustar00package main import ( "fmt" "io/fs" "os" "path/filepath" "strings" tomltest "github.com/BurntSushi/toml-test" "zgo.at/zli" ) var hlErr = zli.ColorHex("#f6d6d6").Bg() | zli.Black | zli.Bold var version = "git" func parseFlags() (tomltest.Runner, []string, int, string) { f := zli.NewFlags(os.Args) var ( help = f.Bool(false, "help", "h") versionFlag = f.Bool(false, "version", "V") encoder = f.Bool(false, "encoder") testDir = f.String("", "testdir") showAll = f.IntCounter(0, "v") color = f.String("always", "color") skip = f.StringList(nil, "skip") run = f.StringList(nil, "run") ) zli.F(f.Parse()) if help.Bool() { fmt.Printf(usage, filepath.Base(os.Args[0])) zli.Exit(0) } if versionFlag.Bool() { fmt.Println(version) zli.Exit(0) } r := tomltest.Runner{ Encoder: encoder.Bool(), RunTests: run.StringsSplit(","), SkipTests: skip.StringsSplit(","), } if len(f.Args) == 0 { zli.Fatalf("no parser command") } for _, r := range r.RunTests { _, err := filepath.Match(r, "") if err != nil { zli.Fatalf("invalid glob pattern %q in -run: %s", r, err) } } for _, r := range r.SkipTests { _, err := filepath.Match(r, "") if err != nil { zli.Fatalf("invalid glob pattern %q in -skip: %s", r, err) } } r.Files = tomltest.EmbeddedTests() if testDir.Set() { r.Files = os.DirFS(testDir.String()) // So I used the path to toml-dir a few times, be forgiving by looking // for a "tests" directory and sub-ing to that. ls, err := fs.ReadDir(r.Files, ".") zli.F(err) var f, t int for _, l := range ls { if l.IsDir() && (l.Name() == "valid" || l.Name() == "invalid") { f++ } if l.IsDir() && l.Name() == "tests" { t++ } } if f < 2 { if t == 0 { zli.Fatalf("%q does not seem to contain any tests (no valid and/or invalid directory)", testDir) } r.Files, err = fs.Sub(r.Files, "tests") zli.F(err) } } r.Parser = tomltest.NewCommandParser(r.Files, f.Args) switch color.String() { case "always", "yes": zli.WantColor = true case "never", "no": zli.WantColor = false case "bold", "monochrome": zli.WantColor = true hlErr = zli.Bold default: zli.Fatalf("invalid value for -color: %q", color) } return r, f.Args, showAll.Int(), testDir.String() } func main() { runner, cmd, showAll, testDir := parseFlags() tests, err := runner.Run() zli.F(err) for _, t := range tests.Tests { if t.Failed() || showAll > 1 { fmt.Print(detailed(runner, t)) } else if showAll == 1 { fmt.Print(short(runner, t)) } } fmt.Printf("toml-test %s: ", cmd) if testDir == "" { fmt.Print("using embeded tests: ") } else { fmt.Printf("tests from %q: ", testDir) } fmt.Printf("%3d passed, %2d failed", tests.Passed, tests.Failed) if tests.Skipped > 0 { fmt.Printf(", %2d skipped", tests.Skipped) } fmt.Println() if tests.Failed > 0 { zli.Exit(1) } zli.Exit(0) } func short(r tomltest.Runner, t tomltest.Test) string { b := new(strings.Builder) switch { case t.Failure != "": b.WriteString(zli.Colorf("FAIL", hlErr)) b.WriteByte(' ') b.WriteString(zli.Bold.String()) b.WriteString(t.Path) b.WriteString(zli.Reset.String()) case t.Skipped: b.WriteString(hlErr.String()) b.WriteString("SKIP") b.WriteString(zli.Reset.String()) b.WriteByte(' ') b.WriteString(t.Path) default: b.WriteString("PASS ") b.WriteString(t.Path) } b.WriteByte('\n') return b.String() } func detailed(r tomltest.Runner, t tomltest.Test) string { b := new(strings.Builder) b.WriteString(short(r, t)) if t.Failed() { b.WriteString(indentWith( indent(t.Failure, 4), zli.Colorf(" ", hlErr))) b.WriteByte('\n') } showStream(b, "input sent to parser-cmd", t.Input) if t.OutputFromStderr { showStream(b, "output from parser-cmd (stderr)", t.Output) } else { showStream(b, "output from parser-cmd (stdout)", t.Output) } if t.Type() == tomltest.TypeValid { showStream(b, "want", t.Want) } else { showStream(b, "want", "Exit code 1") } b.WriteByte('\n') return b.String() } func showStream(b *strings.Builder, name, s string) { b.WriteByte('\n') fmt.Fprintln(b, zli.Colorf(" "+name+":", zli.Bold)) if s == "" { fmt.Fprintln(b, " ") return } fmt.Fprintln(b, indent(s, 7)) } func indentWith(s, with string) string { return with + strings.ReplaceAll(strings.TrimRight(s, "\n"), "\n", "\n"+with) } func indent(s string, n int) string { sp := strings.Repeat(" ", n) return sp + strings.ReplaceAll(strings.TrimRight(s, "\n"), "\n", "\n"+sp) } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/cmd/toml-test/usage.go0000644000000000000000000000660214657064217017446 0ustar00package main const usage = `Usage: %[1]s parser-cmd [ parser-cmd-flags ] toml-test is a tool to verify the correctness of TOML parsers and writers. https://github.com/BurntSushi/toml-test The parser-cmd positional argument should be a program that accepts TOML data on stdin until EOF, and is expected to write the corresponding JSON encoding on stdout. Please see 'README.md' for details on how to satisfy the interface expected by 'toml-test' with your own parser. Any positional arguments are use as the parser-cmd; to pass flags, remember to stop toml-test's flag parsing with -- $ %[1]s -- my-parser -x -y There are two tests: decoder This is the default. encoder When -encoder is given. Tests are split in to two groups: valid Valid TOML files invalid Invalid TOML files that should be rejected with an error. invalid-encoder Invalid input for the encoder All tests are referred to relative to to the tests/ directory: valid/dir/name or invalid/dir/name. Flags: -help Show this help and exit. -version Show version and exit. -encoder The given parser-cmd will be tested as a TOML encoder. The parser-cmd will be sent JSON on stdin and is expected to write TOML to stdout. The JSON will be in the same format as specified in the toml-test README. Note that this depends on the correctness of my TOML parser! -v List all tests, even passing ones. Add twice to show detailed output for passing tests. -run Specify a list of tests to run; the default is to run all tests. Test names include the directory, i.e. "valid/test-name" or "invalid/test-name". You can use globbing patterns , for example to run all string tests: $ toml-test toml-test-decoder -run 'valid/string*' You can specify this argument more than once, and/or specify multiple tests by separating them with a comma: $ toml-test toml-test-decoder \ -run valid/string-empty \ -run valid/string-nl,valid/string-simple This will run three tests (string-empty, string-nl, string-simple). Globbing patterns: https://pkg.go.dev/path/filepath#Match -skip Tests to skip, this uses the same syntax as the -run flag. -color Output color; possible values: always Show test failures in bold and red (default). bold Show test failures in bold only. never Never output any escape codes. -testdir Location of the tests; the default is to use the tests compiled in the binary; this is only useful if you want to add or modify tests. A test in the invalid directory is a toml file that is known to be invalid and should be rejected by the parser. A test in the valid directory is a toml and json file with the same name, where the json file is the JSON representation of the TOML file according to the syntax described in the README. For encoders, the same directory scheme above is used, except the invalid-encoder directory is used instead of the invalid directory. ` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/gen-multi.py0000755000000000000000000000060614657064217015574 0ustar00#!/usr/bin/env python3 import glob import os.path for f in glob.glob('tests/invalid/*/*.multi'): base = os.path.dirname(f[:-6]) for l in open(f, 'rb').readlines(): name = l.split(b'=')[0].strip().decode() if name == '' or name[0] == '#': continue path = base + "/" + name + '.toml' with open(path, 'wb+') as fp: fp.write(l) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/go.mod0000644000000000000000000000031414657064217014420 0ustar00module github.com/BurntSushi/toml-test go 1.16 require ( github.com/BurntSushi/toml v0.4.0 // no_term branch, which doesn't depend on x/term and x/sys zgo.at/zli v0.0.0-20210619044753-e7020a328e59 ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/go.sum0000644000000000000000000000247214657064217014454 0ustar00github.com/BurntSushi/toml v0.3.2-0.20210614224209-34d990aa228d/go.mod h1:2QZjSXA5e+XyFeCAxxtL8Z4StYUsTquL8ODGPR3C3MA= github.com/BurntSushi/toml v0.3.2-0.20210621044154-20a94d639b8e/go.mod h1:t4zg8TkHfP16Vb3x4WKIw7zVYMit5QFtPEO8lOWxzTg= github.com/BurntSushi/toml v0.3.2-0.20210624061728-01bfc69d1057/go.mod h1:NMj2lD5LfMqcE0w8tnqOsH6944oaqpI1974lrIwerfE= github.com/BurntSushi/toml v0.3.2-0.20210704081116-ccff24ee4463/go.mod h1:EkRrMiQQmfxK6kIldz3QbPlhmVkrjW1RDJUnbDqGYvc= github.com/BurntSushi/toml v0.4.0 h1:qD/r9AL67srjW6O3fcSKZDsXqzBNX6ieSRywr2hRrdE= github.com/BurntSushi/toml v0.4.0/go.mod h1:wtejDu7Q0FhCWAo2aXkywSJyYFg01EDTKozLNCz2JBA= github.com/BurntSushi/toml-test v0.1.1-0.20210620192437-de01089bbf76/go.mod h1:P/PrhmZ37t5llHfDuiouWXtFgqOoQ12SAh9j6EjrBR4= github.com/BurntSushi/toml-test v0.1.1-0.20210624055653-1f6389604dc6/go.mod h1:UAIt+Eo8itMZAAgImXkPGDMYsT1SsJkVdB5TuONl86A= github.com/BurntSushi/toml-test v0.1.1-0.20210704062846-269931e74e3f/go.mod h1:fnFWrIwqgHsEjVsW3RYCJmDo86oq9eiJ9u6bnqhtm2g= github.com/BurntSushi/toml-test v0.1.1-0.20210723065233-facb9eccd4da/go.mod h1:ve9Q/RRu2vHi42LocPLNvagxuUJh993/95b18bw/Nws= zgo.at/zli v0.0.0-20210619044753-e7020a328e59 h1:NId7flXh2TTB7XD/0/WBTuZ8L5mpNMCdYyqJ/VQIlFM= zgo.at/zli v0.0.0-20210619044753-e7020a328e59/go.mod h1:HLAc12TjNGT+VRXr76JnsNE3pbooQtwKWhX+RlDjQ2Y= ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/json.go0000644000000000000000000001505114657064217014616 0ustar00package tomltest import ( "strconv" "strings" "time" ) // cmpJSON consumes the recursive structure of both want and have // simultaneously. If anything is unequal, the result has failed and comparison // stops. // // reflect.DeepEqual could work here, but it won't tell us how the two // structures are different. func (r Test) cmpJSON(want, have interface{}) Test { switch w := want.(type) { case map[string]interface{}: return r.cmpJSONMaps(w, have) case []interface{}: return r.cmpJSONArrays(w, have) default: return r.fail( "Key '%s' in expected output should be a map or a list of maps, but it's a %T", r.Key, want) } } func (r Test) cmpJSONMaps(want map[string]interface{}, have interface{}) Test { haveMap, ok := have.(map[string]interface{}) if !ok { return r.mismatch("table", want, haveMap) } // Check to make sure both or neither are values. if isValue(want) && !isValue(haveMap) { return r.fail( "Key '%s' is supposed to be a value, but the parser reports it as a table", r.Key) } if !isValue(want) && isValue(haveMap) { return r.fail( "Key '%s' is supposed to be a table, but the parser reports it as a value", r.Key) } if isValue(want) && isValue(haveMap) { return r.cmpJSONValues(want, haveMap) } // Check that the keys of each map are equivalent. for k := range want { if _, ok := haveMap[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in parser output.", bunk.Key) } } for k := range haveMap { if _, ok := want[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in expected output.", bunk.Key) } } // Okay, now make sure that each value is equivalent. for k := range want { if sub := r.kjoin(k).cmpJSON(want[k], haveMap[k]); sub.Failed() { return sub } } return r } func (r Test) cmpJSONArrays(want, have interface{}) Test { wantSlice, ok := want.([]interface{}) if !ok { return r.bug("'value' should be a JSON array when 'type=array', but it is a %T", want) } haveSlice, ok := have.([]interface{}) if !ok { return r.fail( "Malformed output from your encoder: 'value' is not a JSON array: %T", have) } if len(wantSlice) != len(haveSlice) { return r.fail("Array lengths differ for key '%s':\n"+ " Expected: %d\n"+ " Your encoder: %d", r.Key, len(wantSlice), len(haveSlice)) } for i := 0; i < len(wantSlice); i++ { if sub := r.cmpJSON(wantSlice[i], haveSlice[i]); sub.Failed() { return sub } } return r } func (r Test) cmpJSONValues(want, have map[string]interface{}) Test { wantType, ok := want["type"].(string) if !ok { return r.bug("'type' should be a string, but it is a %T", want["type"]) } haveType, ok := have["type"].(string) if !ok { return r.fail("Malformed output from your encoder: 'type' is not a string: %T", have["type"]) } if wantType != haveType { return r.valMismatch(wantType, haveType, want, have) } // If this is an array, then we've got to do some work to check equality. if wantType == "array" { return r.cmpJSONArrays(want, have) } // Atomic values are always strings wantVal, ok := want["value"].(string) if !ok { return r.bug("'value' %v should be a string, but it is a %[1]T", want["value"]) } haveVal, ok := have["value"].(string) if !ok { return r.fail("Malformed output from your encoder: %T is not a string", have["value"]) } // Excepting floats and datetimes, other values can be compared as strings. switch wantType { case "float": return r.cmpFloats(wantVal, haveVal) case "datetime", "datetime-local", "date-local", "time-local": return r.cmpAsDatetimes(wantType, wantVal, haveVal) default: return r.cmpAsStrings(wantVal, haveVal) } } func (r Test) cmpAsStrings(want, have string) Test { if want != have { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %s\n"+ " Your encoder: %s", r.Key, want, have) } return r } func (r Test) cmpFloats(want, have string) Test { // Special case for NaN, since NaN != NaN. if strings.HasSuffix(want, "nan") || strings.HasSuffix(have, "nan") { if want != have { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, want, have) } return r } wantF, err := strconv.ParseFloat(want, 64) if err != nil { return r.bug("Could not read '%s' as a float value for key '%s'", want, r.Key) } haveF, err := strconv.ParseFloat(have, 64) if err != nil { return r.fail("Malformed output from your encoder: key '%s' is not a float: '%s'", r.Key, have) } if wantF != haveF { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, wantF, haveF) } return r } var datetimeRepl = strings.NewReplacer( " ", "T", "t", "T", "z", "Z") var layouts = map[string]string{ "datetime": time.RFC3339Nano, "datetime-local": "2006-01-02T15:04:05.999999999", "date-local": "2006-01-02", "time-local": "15:04:05", } func (r Test) cmpAsDatetimes(kind, want, have string) Test { layout, ok := layouts[kind] if !ok { panic("should never happen") } wantT, err := time.Parse(layout, datetimeRepl.Replace(want)) if err != nil { return r.bug("Could not read '%s' as a datetime value for key '%s'", want, r.Key) } haveT, err := time.Parse(layout, datetimeRepl.Replace(want)) if err != nil { return r.fail("Malformed output from your encoder: key '%s' is not a datetime: '%s'", r.Key, have) } if !wantT.Equal(haveT) { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, wantT, haveT) } return r } func (r Test) cmpAsDatetimesLocal(want, have string) Test { if datetimeRepl.Replace(want) != datetimeRepl.Replace(have) { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, want, have) } return r } func (r Test) kjoin(key string) Test { if len(r.Key) == 0 { r.Key = key } else { r.Key += "." + key } return r } func isValue(m map[string]interface{}) bool { if len(m) != 2 { return false } if _, ok := m["type"]; !ok { return false } if _, ok := m["value"]; !ok { return false } return true } func (r Test) mismatch(wantType string, want, have interface{}) Test { return r.fail("Key '%s' is not an %s but %[4]T:\n"+ " Expected: %#[3]v\n"+ " Your encoder: %#[4]v", r.Key, wantType, want, have) } func (r Test) valMismatch(wantType, haveType string, want, have interface{}) Test { return r.fail("Key '%s' is not an %s but %s:\n"+ " Expected: %#[3]v\n"+ " Your encoder: %#[4]v", r.Key, wantType, want, have) } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/runner.go0000644000000000000000000002265614657064217015167 0ustar00//go:generate ./gen-multi.py package tomltest import ( "bytes" "embed" "encoding/json" "errors" "fmt" "io/fs" "os" "os/exec" "path/filepath" "strings" "github.com/BurntSushi/toml" ) type testType uint8 const ( TypeValid testType = iota TypeInvalid ) //go:embed tests/* var embeddedTests embed.FS // EmbeddedTests are the tests embedded in toml-test, rooted to the "test/" // directory. func EmbeddedTests() fs.FS { f, err := fs.Sub(embeddedTests, "tests") if err != nil { panic(err) } return f } // Runner runs a set of tests. // // The validity of the parameters is not checked extensively; the caller should // verify this if need be. See ./cmd/toml-test for an example. type Runner struct { Files fs.FS // Test files. Encoder bool // Are we testing an encoder? RunTests []string // Tests to run; run all if blank. SkipTests []string // Tests to skip. Parser Parser // Send data to a parser. } // A Parser instance is used to call the TOML parser we test. // // By default this is done through an external command. type Parser interface { // Encode a JSON string to TOML. // // The output is the TOML string; if outputIsError is true then it's assumed // that an encoding error occurred. // // An error return should only be used in case an unrecoverable error // occurred; failing to encode to TOML is not an error, but the encoder // unexpectedly panicking is. Encode(jsonInput string) (output string, outputIsError bool, err error) // Decode a TOML string to JSON. The same semantics as Encode apply. Decode(tomlInput string) (output string, outputIsError bool, err error) } // CommandParser calls an external command. type CommandParser struct { fsys fs.FS cmd []string } // Tests are tests to run. type Tests struct { Tests []Test // Set when test are run. Skipped, Passed, Failed int } // Result is the result of a single test. type Test struct { Path string // Path of test, e.g. "valid/string-test" // Set when a test is run. Skipped bool // Skipped this test? Failure string // Failure message. Key string // TOML key the failure occured on; may be blank. Encoder bool // Encoder test? Input string // The test case that we sent to the external program. Output string // Output from the external program. Want string // The output we want. OutputFromStderr bool // The Output came from stderr, not stdout. } // List all tests in Files. func (r Runner) List() ([]string, error) { ls := make([]string, 0, 256) if err := r.findTOML("valid", &ls); err != nil { return nil, fmt.Errorf("reading 'valid/' dir: %w", err) } d := "invalid" + map[bool]string{true: "-encoder", false: ""}[r.Encoder] if err := r.findTOML(d, &ls); err != nil { return nil, fmt.Errorf("reading %q dir: %w", d, err) } return ls, nil } // Run all tests listed in t.RunTests. // // TODO: give option to: // - Run all tests with \n replaced with \r\n // - Run all tests with '# comment' appended to every line. func (r Runner) Run() (Tests, error) { skipped, err := r.findTests() if err != nil { return Tests{}, fmt.Errorf("tomltest.Runner.Run: %w", err) } tests := Tests{Tests: make([]Test, 0, len(r.RunTests)), Skipped: skipped} for _, p := range r.RunTests { if r.hasSkip(p) { tests.Skipped++ tests.Tests = append(tests.Tests, Test{Path: p, Skipped: true, Encoder: r.Encoder}) continue } t := Test{Path: p, Encoder: r.Encoder}.Run(r.Parser, r.Files) tests.Tests = append(tests.Tests, t) if t.Failed() { tests.Failed++ } else { tests.Passed++ } } return tests, nil } // find all TOML files in 'path' relative to the test directory. func (r Runner) findTOML(path string, appendTo *[]string) error { err := fs.WalkDir(r.Files, path, func(path string, d fs.DirEntry, err error) error { if err != nil { return err } if d.IsDir() || !strings.HasSuffix(path, ".toml") { return nil } *appendTo = append(*appendTo, strings.TrimSuffix(path, ".toml")) return nil }) // It's okay if the directory doesn't exist. var pErr *os.PathError if errors.As(err, &pErr) && pErr.Op == "open" && pErr.Path == path { return nil } return err } // Expand RunTest glob patterns, or return all tests if RunTests if empty. func (r *Runner) findTests() (int, error) { ls, err := r.List() if err != nil { return 0, err } var skip int if len(r.RunTests) == 0 { r.RunTests = ls } else { run := make([]string, 0, len(r.RunTests)) for _, l := range ls { for _, r := range r.RunTests { if m, _ := filepath.Match(r, l); m { run = append(run, l) break } } } r.RunTests, skip = run, len(ls)-len(run) } // Expand invalid tests ending in ".multi.toml" expanded := make([]string, 0, len(r.RunTests)) for _, path := range r.RunTests { if !strings.HasSuffix(path, ".multi") { expanded = append(expanded, path) continue } d, err := fs.ReadFile(r.Files, path+".toml") if err != nil { return 0, err } fmt.Println(string(d)) } r.RunTests = expanded return skip, nil } func (r Runner) hasSkip(path string) bool { for _, s := range r.SkipTests { if m, _ := filepath.Match(s, path); m { return true } } return false } func (c CommandParser) Encode(input string) (output string, outputIsError bool, err error) { stdout, stderr := new(bytes.Buffer), new(bytes.Buffer) cmd := exec.Command(c.cmd[0]) cmd.Args = c.cmd cmd.Stdin, cmd.Stdout, cmd.Stderr = strings.NewReader(input), stdout, stderr err = cmd.Run() if err != nil { eErr := &exec.ExitError{} if errors.As(err, &eErr) { fmt.Fprintf(stderr, "\nExit %d\n", eErr.ProcessState.ExitCode()) err = nil } } if stderr.Len() > 0 { return strings.TrimSpace(stderr.String()) + "\n", true, err } return strings.TrimSpace(stdout.String()) + "\n", false, err } func NewCommandParser(fsys fs.FS, cmd []string) CommandParser { return CommandParser{fsys, cmd} } func (c CommandParser) Decode(input string) (string, bool, error) { return c.Encode(input) } // Run this test. func (t Test) Run(p Parser, fsys fs.FS) Test { if t.Type() == TypeInvalid { return t.runInvalid(p, fsys) } return t.runValid(p, fsys) } func (t Test) runInvalid(p Parser, fsys fs.FS) Test { var err error _, t.Input, err = t.ReadInput(fsys) if err != nil { return t.bug(err.Error()) } if t.Encoder { t.Output, t.OutputFromStderr, err = p.Encode(t.Input) } else { t.Output, t.OutputFromStderr, err = p.Decode(t.Input) } if err != nil { return t.fail(err.Error()) } if !t.OutputFromStderr { return t.fail("Expected an error, but no error was reported.") } return t } func (t Test) runValid(p Parser, fsys fs.FS) Test { var err error _, t.Input, err = t.ReadInput(fsys) if err != nil { return t.bug(err.Error()) } if t.Encoder { t.Output, t.OutputFromStderr, err = p.Encode(t.Input) } else { t.Output, t.OutputFromStderr, err = p.Decode(t.Input) } if err != nil { return t.fail(err.Error()) } if t.OutputFromStderr { return t.fail(t.Output) } if t.Output == "" { // Special case: we expect an empty output here. if t.Path != "valid/empty-file" { return t.fail("stdout is empty") } } // Compare for encoder test if t.Encoder { want, err := t.ReadWantTOML(fsys) if err != nil { return t.bug(err.Error()) } var have interface{} if _, err := toml.Decode(t.Output, &have); err != nil { //return t.fail("decode TOML from encoder %q:\n %s", cmd, err) return t.fail("decode TOML from encoder:\n %s", err) } return t.cmpTOML(want, have) } // Compare for decoder test want, err := t.ReadWantJSON(fsys) if err != nil { return t.fail(err.Error()) } var have interface{} if err := json.Unmarshal([]byte(t.Output), &have); err != nil { return t.fail("decode JSON output from parser:\n %s", err) } return t.cmpJSON(want, have) } // ReadInput reads the file sent to the encoder. func (t Test) ReadInput(fsys fs.FS) (path, data string, err error) { path = t.Path + map[bool]string{true: ".json", false: ".toml"}[t.Encoder] d, err := fs.ReadFile(fsys, path) if err != nil { return path, "", err } return path, string(d), nil } func (t Test) ReadWant(fsys fs.FS) (path, data string, err error) { if t.Type() == TypeInvalid { panic("testoml.Test.ReadWant: invalid tests do not have a 'correct' version") } path = t.Path + map[bool]string{true: ".toml", false: ".json"}[t.Encoder] d, err := fs.ReadFile(fsys, path) if err != nil { return path, "", err } return path, string(d), nil } func (t *Test) ReadWantJSON(fsys fs.FS) (v interface{}, err error) { var path string path, t.Want, err = t.ReadWant(fsys) if err != nil { return nil, err } if err := json.Unmarshal([]byte(t.Want), &v); err != nil { return nil, fmt.Errorf("decode JSON file %q:\n %s", path, err) } return v, nil } func (t *Test) ReadWantTOML(fsys fs.FS) (v interface{}, err error) { var path string path, t.Want, err = t.ReadWant(fsys) if err != nil { return nil, err } _, err = toml.Decode(t.Want, &v) if err != nil { return nil, fmt.Errorf("Could not decode TOML file %q:\n %s", path, err) } return v, nil } // Test type: "valid", "invalid" func (t Test) Type() testType { if strings.HasPrefix(t.Path, "invalid") { return TypeInvalid } return TypeValid } func (t Test) fail(format string, v ...interface{}) Test { t.Failure = fmt.Sprintf(format, v...) return t } func (t Test) bug(format string, v ...interface{}) Test { return t.fail("BUG IN TEST CASE: "+format, v...) } func (t Test) Failed() bool { return t.Failure != "" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/.gitattributes0000644000000000000000000000001614657064217017346 0ustar00*.toml -text ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/missing-separator.toml0000644000000000000000000000002214657064217023560 0ustar00wrong = [ 1 2 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/no-close-2.toml0000644000000000000000000000001214657064217021766 0ustar00x = [42 # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/no-close-table-2.toml0000644000000000000000000000002214657064217023054 0ustar00x = [{ key = 42 # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/no-close-table.toml0000644000000000000000000000002014657064217022713 0ustar00x = [{ key = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/no-close.toml0000644000000000000000000000002714657064217021635 0ustar00long_array = [ 1, 2, 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/tables-1.toml0000644000000000000000000000006714657064217021532 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/tables-2.toml0000644000000000000000000000027414657064217021533 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # This table conflicts with the previous table [fruit.variety] name = "granny smith" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/text-after-array-entries.toml0000644000000000000000000000010614657064217024762 0ustar00array = [ "Is there life after an array separator?", No "Entry" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/text-before-array-separator.toml0000644000000000000000000000010714657064217025453 0ustar00array = [ "Is there life before an array separator?" No, "Entry" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/array/text-in-array.toml0000644000000000000000000000007014657064217022620 0ustar00array = [ "Entry 1", I don't belong, "Entry 2", ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/bool/mixed-case.toml0000644000000000000000000000001614657064217021750 0ustar00valid = False ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/bool/wrong-case-false.toml0000644000000000000000000000001214657064217023062 0ustar00b = FALSE ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/bool/wrong-case-true.toml0000644000000000000000000000001114657064217022746 0ustar00a = TRUE ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/comment-del.toml0000644000000000000000000000003114657064217022657 0ustar00comment-del = "0x7f" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/comment-lf.toml0000644000000000000000000000003214657064217022515 0ustar00comment-lf = "ctrl-P" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/comment-null.toml0000644000000000000000000000003214657064217023066 0ustar00comment-null = "null" # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/comment-us.toml0000644000000000000000000000003214657064217022543 0ustar00comment-us = "ctrl-_" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/control.multi0000644000000000000000000000107014657064217022316 0ustar00# NOTE: this file contains literal control characters. comment-null = "null" # comment-lf = "ctrl-P" #  comment-us = "ctrl-_" #  comment-del = "0x7f" #  string-null = "null" string-lf = "null" string-us = "null" string-del = "null" rawstring-null = 'null' rawstring-lf = 'null' rawstring-us = 'null' rawstring-del = 'null' multi-null = """null""" multi-lf = """null""" multi-us = """null""" multi-del = """null""" rawmulti-null = '''null''' rawmulti-lf = '''null''' rawmulti-us = '''null''' rawmulti-del = '''null''' string-bs = "backspace" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/multi-del.toml0000644000000000000000000000003014657064217022346 0ustar00multi-del = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/multi-lf.toml0000644000000000000000000000002714657064217022211 0ustar00multi-lf = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/multi-null.toml0000644000000000000000000000003114657064217022555 0ustar00multi-null = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/multi-us.toml0000644000000000000000000000002714657064217022237 0ustar00multi-us = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/rawmulti-del.toml0000644000000000000000000000003314657064217023063 0ustar00rawmulti-del = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/rawmulti-lf.toml0000644000000000000000000000003214657064217022717 0ustar00rawmulti-lf = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/rawmulti-null.toml0000644000000000000000000000003414657064217023272 0ustar00rawmulti-null = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/rawmulti-us.toml0000644000000000000000000000003214657064217022745 0ustar00rawmulti-us = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/rawstring-del.toml0000644000000000000000000000003014657064217023234 0ustar00rawstring-del = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/rawstring-lf.toml0000644000000000000000000000002714657064217023077 0ustar00rawstring-lf = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/rawstring-null.toml0000644000000000000000000000003114657064217023443 0ustar00rawstring-null = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/rawstring-us.toml0000644000000000000000000000002714657064217023125 0ustar00rawstring-us = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/string-bs.toml0000644000000000000000000000003114657064217022363 0ustar00string-bs = "backspace" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/string-del.toml0000644000000000000000000000002514657064217022526 0ustar00string-del = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/string-lf.toml0000644000000000000000000000002414657064217022362 0ustar00string-lf = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/string-null.toml0000644000000000000000000000002614657064217022735 0ustar00string-null = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/control/string-us.toml0000644000000000000000000000002414657064217022410 0ustar00string-us = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/datetime/impossible-date.toml0000644000000000000000000000003114657064217023650 0ustar00d = 2006-01-50T00:00:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/datetime/no-leads-with-milli.toml0000644000000000000000000000004414657064217024352 0ustar00with-milli = 1987-07-5T17:45:00.12Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/datetime/no-leads.toml0000644000000000000000000000003714657064217022277 0ustar00no-leads = 1987-7-05T17:45:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/datetime/no-secs.toml0000644000000000000000000000003414657064217022141 0ustar00no-secs = 1987-07-05T17:45Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/datetime/no-t.toml0000644000000000000000000000003314657064217021446 0ustar00no-t = 1987-07-0517:45:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/datetime/trailing-t.toml0000644000000000000000000000002014657064217022637 0ustar00d = 2006-01-30T ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/encoding/bad-utf8-at-end.toml0000644000000000000000000000036214657064217023350 0ustar00# There is a 0xda at after the quotes, and no EOL at the end of the file. # # This is a bit of an edge case: This indicates there should be two bytes # (0b1101_1010) but there is no byte to follow because it's the end of the file. x = """"""././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/encoding/bad-utf8-in-comment.toml0000644000000000000000000000000414657064217024237 0ustar00# ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/encoding/bad-utf8-in-string.toml0000644000000000000000000000010314657064217024103 0ustar00# The following line contains an invalid UTF-8 sequence. bad = "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/encoding/bom-not-at-start-1.toml0000644000000000000000000000002414657064217024031 0ustar00bom-not-at-start ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/encoding/bom-not-at-start-2.toml0000644000000000000000000000002514657064217024033 0ustar00bom-not-at-start= ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/encoding/utf16-bom.toml0000644000000000000000000000004614657064217022307 0ustar00# UTF-16 with BOM ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/encoding/utf16.toml0000644000000000000000000000005214657064217021531 0ustar00# UTF-16 without BOM ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/double-point-1.toml0000644000000000000000000000002614657064217022643 0ustar00double-point-1 = 0..1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/double-point-2.toml0000644000000000000000000000002714657064217022645 0ustar00double-point-2 = 0.1.2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/exp-double-e-1.toml0000644000000000000000000000002614657064217022530 0ustar00exp-double-e-1 = 1ee2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/exp-double-e-2.toml0000644000000000000000000000002714657064217022532 0ustar00exp-double-e-2 = 1e2e3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/exp-double-us.toml0000644000000000000000000000002714657064217022576 0ustar00exp-double-us = 1e__23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/exp-leading-us.toml0000644000000000000000000000002714657064217022727 0ustar00exp-leading-us = 1e_23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/exp-point-1.toml0000644000000000000000000000002414657064217022163 0ustar00exp-point-1 = 1e2.3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/exp-point-2.toml0000644000000000000000000000002314657064217022163 0ustar00exp-point-2 = 1.e2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/exp-trailing-us.toml0000644000000000000000000000003114657064217023130 0ustar00exp-trailing-us = 1e_23_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/float.multi0000644000000000000000000000127114657064217021373 0ustar00leading-zero = 03.14 leading-zero-neg = -03.14 leading-zero-plus = +03.14 leading-point = .12345 leading-point-neg = -.12345 leading-point-plus = +.12345 trailing-point = 1. trailing-point-min = -1. trailing-point-plus = +1. trailing-us = 1.2_ leading-us = _1.2 us-before-point = 1_.2 us-after-point = 1._2 double-point-1 = 0..1 double-point-2 = 0.1.2 exp-point-1 = 1e2.3 exp-point-2 = 1.e2 exp-double-e-1 = 1ee2 exp-double-e-2 = 1e2e3 exp-leading-us = 1e_23 exp-trailing-us = 1e_23_ exp-double-us = 1e__23 inf-incomplete-1 = in inf-incomplete-2 = +in inf-incomplete-3 = -in nan-incomplete-1 = na nan-incomplete-2 = +na nan-incomplete-3 = -na nan_underscore = na_n inf_underscore = in_f ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/inf-incomplete-1.toml0000644000000000000000000000002614657064217023153 0ustar00inf-incomplete-1 = in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/inf-incomplete-2.toml0000644000000000000000000000002714657064217023155 0ustar00inf-incomplete-2 = +in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/inf-incomplete-3.toml0000644000000000000000000000002714657064217023156 0ustar00inf-incomplete-3 = -in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/inf_underscore.toml0000644000000000000000000000002614657064217023111 0ustar00inf_underscore = in_f ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/leading-point-neg.toml0000644000000000000000000000003414657064217023404 0ustar00leading-point-neg = -.12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/leading-point-plus.toml0000644000000000000000000000003514657064217023617 0ustar00leading-point-plus = +.12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/leading-point.toml0000644000000000000000000000002714657064217022637 0ustar00leading-point = .12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/leading-us.toml0000644000000000000000000000002214657064217022130 0ustar00leading-us = _1.2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/leading-zero-neg.toml0000644000000000000000000000003214657064217023230 0ustar00leading-zero-neg = -03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/leading-zero-plus.toml0000644000000000000000000000003314657064217023443 0ustar00leading-zero-plus = +03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/leading-zero.toml0000644000000000000000000000002514657064217022463 0ustar00leading-zero = 03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/nan-incomplete-1.toml0000644000000000000000000000002614657064217023153 0ustar00nan-incomplete-1 = na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/nan-incomplete-2.toml0000644000000000000000000000002714657064217023155 0ustar00nan-incomplete-2 = +na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/nan-incomplete-3.toml0000644000000000000000000000002714657064217023156 0ustar00nan-incomplete-3 = -na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/nan_underscore.toml0000644000000000000000000000002614657064217023111 0ustar00nan_underscore = na_n ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/trailing-point-min.toml0000644000000000000000000000003114657064217023621 0ustar00trailing-point-min = -1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/trailing-point-plus.toml0000644000000000000000000000003214657064217024022 0ustar00trailing-point-plus = +1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/trailing-point.toml0000644000000000000000000000002414657064217023042 0ustar00trailing-point = 1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/trailing-us.toml0000644000000000000000000000002314657064217022337 0ustar00trailing-us = 1.2_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/us-after-point.toml0000644000000000000000000000002614657064217022761 0ustar00us-after-point = 1._2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/float/us-before-point.toml0000644000000000000000000000002714657064217023123 0ustar00us-before-point = 1_.2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/inline-table/double-comma.toml0000644000000000000000000000001714657064217023706 0ustar00t = {x=3,,y=4} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/inline-table/empty.toml0000644000000000000000000000001014657064217022471 0ustar00t = {,} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/inline-table/linebreak-1.toml0000644000000000000000000000015714657064217023441 0ustar00# No newlines are allowed between the curly braces unless they are valid within # a value. simple = { a = 1 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/inline-table/linebreak-2.toml0000644000000000000000000000001714657064217023435 0ustar00t = {a=1, b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/inline-table/linebreak-3.toml0000644000000000000000000000001714657064217023436 0ustar00t = {a=1 ,b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/inline-table/linebreak-4.toml0000644000000000000000000000011314657064217023434 0ustar00json_like = { first = "Tom", last = "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/inline-table/no-comma.toml0000644000000000000000000000002214657064217023044 0ustar00t = {x = 3 y = 4} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9842014 tomlkit-0.13.2/tests/toml-test/tests/invalid/inline-table/trailing-comma.toml0000644000000000000000000000021414657064217024244 0ustar00# A terminating comma (also called trailing comma) is not permitted after the # last key/value pair in an inline table abc = { abc = 123, } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/capital-bin.toml0000644000000000000000000000002214657064217022613 0ustar00capital-bin = 0B0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/capital-hex.toml0000644000000000000000000000002214657064217022627 0ustar00capital-hex = 0X1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/capital-oct.toml0000644000000000000000000000002214657064217022630 0ustar00capital-oct = 0O0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/double-sign-nex.toml0000644000000000000000000000002714657064217023435 0ustar00double-sign-nex = --99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/double-sign-plus.toml0000644000000000000000000000003014657064217023620 0ustar00double-sign-plus = ++99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/double-us.toml0000644000000000000000000000002214657064217022327 0ustar00double-us = 1__23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/integer.multi0000644000000000000000000000121414657064217022250 0ustar00leading-zero-1 = 01 leading-zero-2 = 00 leading-zero-sign-1 = -01 leading-zero-sign-2 = +01 double-sign-plus = ++99 double-sign-nex = --99 negative-hex = -0xff negative-bin = -0b11010110 negative-oct = -0o99 positive-hex = +0xff positive-bin = +0b11010110 positive-oct = +0o99 trailing-us = 123_ leading-us = _123 double-us = 1__23 us-after-hex = 0x_1 us-after-oct = 0o_1 us-after-bin = 0b_1 trailing-us-hex = 0x1_ trailing-us-oct = 0o1_ trailing-us-bin = 0b1_ leading-us-hex = _0o1 leading-us-oct = _0o1 leading-us-bin = _0o1 invalid-hex = 0xaafz invalid-oct = 0o778 invalid-bin = 0b0012 capital-hex = 0X1 capital-oct = 0O0 capital-bin = 0B0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/invalid-bin.toml0000644000000000000000000000002514657064217022627 0ustar00invalid-bin = 0b0012 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/invalid-hex.toml0000644000000000000000000000002514657064217022643 0ustar00invalid-hex = 0xaafz ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/invalid-oct.toml0000644000000000000000000000002414657064217022643 0ustar00invalid-oct = 0o778 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/leading-us-bin.toml0000644000000000000000000000002614657064217023232 0ustar00leading-us-bin = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/leading-us-hex.toml0000644000000000000000000000002614657064217023246 0ustar00leading-us-hex = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/leading-us-oct.toml0000644000000000000000000000002614657064217023247 0ustar00leading-us-oct = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/leading-us.toml0000644000000000000000000000002214657064217022460 0ustar00leading-us = _123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/leading-zero-1.toml0000644000000000000000000000002414657064217023150 0ustar00leading-zero-1 = 01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/leading-zero-2.toml0000644000000000000000000000002414657064217023151 0ustar00leading-zero-2 = 00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/leading-zero-sign-1.toml0000644000000000000000000000003214657064217024105 0ustar00leading-zero-sign-1 = -01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/leading-zero-sign-2.toml0000644000000000000000000000003214657064217024106 0ustar00leading-zero-sign-2 = +01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/negative-bin.toml0000644000000000000000000000003314657064217023002 0ustar00negative-bin = -0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/negative-hex.toml0000644000000000000000000000002514657064217023017 0ustar00negative-hex = -0xff ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/negative-oct.toml0000644000000000000000000000002514657064217023020 0ustar00negative-oct = -0o99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/positive-bin.toml0000644000000000000000000000003314657064217023042 0ustar00positive-bin = +0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/positive-hex.toml0000644000000000000000000000002514657064217023057 0ustar00positive-hex = +0xff ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/positive-oct.toml0000644000000000000000000000002514657064217023060 0ustar00positive-oct = +0o99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/text-after-integer.toml0000644000000000000000000000004114657064217024147 0ustar00answer = 42 the ultimate answer? ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/trailing-us-bin.toml0000644000000000000000000000002714657064217023441 0ustar00trailing-us-bin = 0b1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/trailing-us-hex.toml0000644000000000000000000000002714657064217023455 0ustar00trailing-us-hex = 0x1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/trailing-us-oct.toml0000644000000000000000000000002714657064217023456 0ustar00trailing-us-oct = 0o1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/trailing-us.toml0000644000000000000000000000002314657064217022667 0ustar00trailing-us = 123_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/us-after-bin.toml0000644000000000000000000000002414657064217022726 0ustar00us-after-bin = 0b_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/us-after-hex.toml0000644000000000000000000000002414657064217022742 0ustar00us-after-hex = 0x_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/integer/us-after-oct.toml0000644000000000000000000000002414657064217022743 0ustar00us-after-oct = 0o_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/after-array.toml0000644000000000000000000000004014657064217022000 0ustar00[[agencies]] owner = "S Cjelli" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/after-table.toml0000644000000000000000000000004414657064217021755 0ustar00[error] this = "should not be here" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/after-value.toml0000644000000000000000000000006014657064217022000 0ustar00first = "Tom" last = "Preston-Werner" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/bare-invalid-character.toml0000644000000000000000000000001714657064217024056 0ustar00bare!key = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/dotted-redefine-table.toml0000644000000000000000000000011414657064217023714 0ustar00# Defined a.b as int a.b = 1 # Tries to access it as table: error a.b.c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/duplicate-keys.toml0000644000000000000000000000003114657064217022506 0ustar00dupe = false dupe = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/duplicate.toml0000644000000000000000000000005714657064217021545 0ustar00# DO NOT DO THIS name = "Tom" name = "Pradyun" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/empty.toml0000644000000000000000000000000514657064217020722 0ustar00 = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/escape.toml0000644000000000000000000000005514657064217021031 0ustar00\u00c0 = "latin capital letter A with grave" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/hash.toml0000644000000000000000000000000714657064217020511 0ustar00a# = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/multiline.toml0000644000000000000000000000002314657064217021566 0ustar00"""long key""" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/newline.toml0000644000000000000000000000002114657064217021223 0ustar00barekey = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/no-eol.toml0000644000000000000000000000001414657064217020755 0ustar00a = 1 b = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/open-bracket.toml0000644000000000000000000000001114657064217022133 0ustar00[abc = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/partial-quoted.toml0000644000000000000000000000002414657064217022520 0ustar00partial"quoted" = 5 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/single-open-bracket.toml0000644000000000000000000000000214657064217023412 0ustar00[ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/space.toml0000644000000000000000000000001014657064217020653 0ustar00a b = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/special-character.toml0000644000000000000000000000003514657064217023141 0ustar00μ = "greek small letter mu" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/start-bracket.toml0000644000000000000000000000002114657064217022330 0ustar00[a] [xyz = 5 [b] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/two-equals.toml0000644000000000000000000000001114657064217021662 0ustar00key= = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/two-equals2.toml0000644000000000000000000000000514657064217021747 0ustar00a==1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/two-equals3.toml0000644000000000000000000000000614657064217021751 0ustar00a=b=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/without-value-1.toml0000644000000000000000000000000414657064217022536 0ustar00key ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/key/without-value-2.toml0000644000000000000000000000000714657064217022542 0ustar00key = ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/bad-byte-escape.toml0000644000000000000000000000002114657064217023225 0ustar00naughty = "\xAg" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/bad-codepoint.toml0000644000000000000000000000012114657064217023011 0ustar00invalid-codepoint = "This string contains a non scalar unicode codepoint \uD801" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/bad-concat.toml0000644000000000000000000000003514657064217022300 0ustar00no_concat = "first" "second" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/bad-escape.toml0000644000000000000000000000007614657064217022276 0ustar00invalid-escape = "This string has a bad \a escape character." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/bad-multiline.toml0000644000000000000000000000004114657064217023030 0ustar00multi = "first line second line" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/bad-slash-escape.toml0000644000000000000000000000007614657064217023406 0ustar00invalid-escape = "This string has a bad \/ escape character." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/bad-uni-esc.toml0000644000000000000000000000001714657064217022374 0ustar00str = "val\ue" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-byte-escapes.toml0000644000000000000000000000002014657064217023742 0ustar00answer = "\x33" ././@PaxHeader0000000000000000000000000000021400000000000010212 xustar00112 path=tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.toml 28 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.to0000644000000000000000000000002514657064217030355 0ustar00a = """\UFFFFFFFF""" ././@PaxHeader0000000000000000000000000000021400000000000010212 xustar00112 path=tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.toml 28 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.to0000644000000000000000000000002514657064217030356 0ustar00a = """\U00D80000""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-multiline-quotes.toml0000644000000000000000000000006214657064217024704 0ustar00str5 = """Here are three quotation marks: """.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-multiline-unknown-escape.toml0000644000000000000000000000001514657064217026317 0ustar00a = """\@""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-1.toml0000644000000000000000000000002114657064217026702 0ustar00a = "\UFFFFFFFF" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-2.toml0000644000000000000000000000002114657064217026703 0ustar00a = "\U00D80000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/basic-unknown-escape.toml0000644000000000000000000000001114657064217024313 0ustar00a = "\@" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/literal-multiline-quotes-1.toml0000644000000000000000000000003614657064217025416 0ustar00a = '''6 apostrophes: '''''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/literal-multiline-quotes-2.toml0000644000000000000000000000005214657064217025415 0ustar00a = '''15 apostrophes: '''''''''''''''''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/missing-quotes.toml0000644000000000000000000000001514657064217023272 0ustar00name = value ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/multiline-escape-space.toml0000644000000000000000000000003414657064217024635 0ustar00a = """ foo \ \n bar""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/multiline-no-close-2.toml0000644000000000000000000000000614657064217024161 0ustar00x=""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/multiline-no-close.toml0000644000000000000000000000004114657064217024021 0ustar00invalid = """ this will fail ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/multiline-quotes-1.toml0000644000000000000000000000003014657064217023756 0ustar00a = """6 quotes: """""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/multiline-quotes-2.toml0000644000000000000000000000003014657064217023757 0ustar00a = """6 quotes: """""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/no-close.toml0000644000000000000000000000005214657064217022023 0ustar00no-ending-quote = "One time, at band camp ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/text-after-string.toml0000644000000000000000000000005414657064217023675 0ustar00string = "Is there life after strings?" No. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/string/wrong-close.toml0000644000000000000000000000004714657064217022547 0ustar00bad-ending-quote = "double and single' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/array-empty.toml0000644000000000000000000000003214657064217022335 0ustar00[[]] name = "Born to Run" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/array-implicit.toml0000644000000000000000000000115614657064217023021 0ustar00# This test is a bit tricky. It should fail because the first use of # `[[albums.songs]]` without first declaring `albums` implies that `albums` # must be a table. The alternative would be quite weird. Namely, it wouldn't # comply with the TOML spec: "Each double-bracketed sub-table will belong to # the most *recently* defined table element *above* it." # # This is in contrast to the *valid* test, table-array-implicit where # `[[albums.songs]]` works by itself, so long as `[[albums]]` isn't declared # later. (Although, `[albums]` could be.) [[albums.songs]] name = "Glory Days" [[albums]] name = "Born in the USA" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/array-missing-bracket.toml0000644000000000000000000000003714657064217024266 0ustar00[[albums] name = "Born to Run" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/duplicate-key-table.toml0000644000000000000000000000006314657064217023714 0ustar00[fruit] type = "apple" [fruit.type] apple = "yes" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/duplicate-table-array.toml0000644000000000000000000000001614657064217024240 0ustar00[tbl] [[tbl]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/duplicate-table-array2.toml0000644000000000000000000000001614657064217024322 0ustar00[[tbl]] [tbl] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/duplicate.toml0000644000000000000000000000002514657064217022037 0ustar00[a] b = 1 [a] c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/empty-implicit-table.toml0000644000000000000000000000002314657064217024116 0ustar00[naughty..naughty] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/empty.toml0000644000000000000000000000000314657064217021217 0ustar00[] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/equals-sign.toml0000644000000000000000000000001314657064217022312 0ustar00[name=bad] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/llbrace.toml0000644000000000000000000000001314657064217021466 0ustar00[ [table]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/nested-brackets-close.toml0000644000000000000000000000001714657064217024247 0ustar00[a]b] zyx = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/nested-brackets-open.toml0000644000000000000000000000001714657064217024103 0ustar00[a[b] zyx = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/quoted-no-close.toml0000644000000000000000000000004214657064217023102 0ustar00["where will it end] name = value ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/redefine.toml0000644000000000000000000000011614657064217021647 0ustar00# Define b as int, and try to use it as a table: error [a] b = 1 [a.b] c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/rrbrace.toml0000644000000000000000000000001314657064217021502 0ustar00[[table] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/text-after-table.toml0000644000000000000000000000003714657064217023240 0ustar00[error] this shouldn't be here ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/whitespace.toml0000644000000000000000000000001614657064217022221 0ustar00[invalid key] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/invalid/table/with-pound.toml0000644000000000000000000000003014657064217022157 0ustar00[key#group] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/array.json0000644000000000000000000000166414657064217020713 0ustar00{ "comments": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ], "dates": [ { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, { "type": "datetime", "value": "1979-05-27T07:32:00Z" }, { "type": "datetime", "value": "2006-06-01T11:00:00Z" } ], "floats": [ { "type": "float", "value": "1.1" }, { "type": "float", "value": "2.1" }, { "type": "float", "value": "3.1" } ], "ints": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" } ], "strings": [ { "type": "string", "value": "a" }, { "type": "string", "value": "b" }, { "type": "string", "value": "c" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/array.toml0000644000000000000000000000031514657064217020705 0ustar00ints = [1, 2, 3, ] floats = [1.1, 2.1, 3.1] strings = ["a", "b", "c"] dates = [ 1987-07-05T17:45:00Z, 1979-05-27T07:32:00Z, 2006-06-01T11:00:00Z, ] comments = [ 1, 2, #this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/bool.json0000644000000000000000000000020314657064217020514 0ustar00{ "a": [ { "type": "bool", "value": "true" }, { "type": "bool", "value": "false" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/bool.toml0000644000000000000000000000002214657064217020515 0ustar00a = [true, false] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/empty.json0000644000000000000000000000012414657064217020721 0ustar00{ "thevoid": [ [ [ [ [] ] ] ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/empty.toml0000644000000000000000000000002514657064217020723 0ustar00thevoid = [[[[[]]]]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/hetergeneous.json0000644000000000000000000000067414657064217022272 0ustar00{ "mixed": [ [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ], [ { "type": "string", "value": "a" }, { "type": "string", "value": "b" } ], [ { "type": "float", "value": "1.1" }, { "type": "float", "value": "2.1" } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/hetergeneous.toml0000644000000000000000000000005114657064217022261 0ustar00mixed = [[1, 2], ["a", "b"], [1.1, 2.1]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/mixed-int-array.json0000644000000000000000000000027214657064217022601 0ustar00{ "arrays-and-ints": [ { "type": "integer", "value": "1" }, [ { "type": "string", "value": "Arrays are not integers." } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/mixed-int-array.toml0000644000000000000000000000006514657064217022603 0ustar00arrays-and-ints = [1, ["Arrays are not integers."]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/mixed-int-float.json0000644000000000000000000000022014657064217022561 0ustar00{ "ints-and-floats": [ { "type": "integer", "value": "1" }, { "type": "float", "value": "1.1" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/mixed-int-float.toml0000644000000000000000000000003314657064217022565 0ustar00ints-and-floats = [1, 1.1] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/mixed-int-string.json0000644000000000000000000000022214657064217022764 0ustar00{ "strings-and-ints": [ { "type": "string", "value": "hi" }, { "type": "integer", "value": "42" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/mixed-int-string.toml0000644000000000000000000000003614657064217022771 0ustar00strings-and-ints = ["hi", 42] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/mixed-string-table.json0000644000000000000000000000061114657064217023263 0ustar00{ "contributors": [ { "type": "string", "value": "Foo Bar \u003cfoo@example.com\u003e" }, { "email": { "type": "string", "value": "bazqux@example.com" }, "name": { "type": "string", "value": "Baz Qux" }, "url": { "type": "string", "value": "https://example.com/bazqux" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/mixed-string-table.toml0000644000000000000000000000021314657064217023263 0ustar00contributors = [ "Foo Bar ", { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/nested-double.json0000644000000000000000000000057614657064217022330 0ustar00{ "nest": [ [ [ { "type": "string", "value": "a" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, [ { "type": "integer", "value": "3" } ] ] ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/nested-double.toml0000644000000000000000000000005014657064217022315 0ustar00nest = [ [ ["a"], [1, 2, [3]] ] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/nested-inline-table.json0000644000000000000000000000005314657064217023407 0ustar00{ "a": [ { "b": {} } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/nested-inline-table.toml0000644000000000000000000000002314657064217023406 0ustar00a = [ { b = {} } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/nested.json0000644000000000000000000000025314657064217021050 0ustar00{ "nest": [ [ { "type": "string", "value": "a" } ], [ { "type": "string", "value": "b" } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/nested.toml0000644000000000000000000000002614657064217021050 0ustar00nest = [["a"], ["b"]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/nospaces.json0000644000000000000000000000027614657064217021406 0ustar00{ "ints": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/nospaces.toml0000644000000000000000000000001714657064217021401 0ustar00ints = [1,2,3] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/string-quote-comma-2.json0000644000000000000000000000012014657064217023451 0ustar00{ "title": [ { "type": "string", "value": " \", " } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/string-quote-comma-2.toml0000644000000000000000000000002414657064217023456 0ustar00title = [ " \", ",] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/string-quote-comma.json0000644000000000000000000000024714657064217023324 0ustar00{ "title": [ { "type": "string", "value": "Client: \"XXXX\", Job: XXXX" }, { "type": "string", "value": "Code: XXXX" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/string-quote-comma.toml0000644000000000000000000000007014657064217023320 0ustar00title = [ "Client: \"XXXX\", Job: XXXX", "Code: XXXX" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/string-with-comma.json0000644000000000000000000000024314657064217023136 0ustar00{ "title": [ { "type": "string", "value": "Client: XXXX, Job: XXXX" }, { "type": "string", "value": "Code: XXXX" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/string-with-comma.toml0000644000000000000000000000006414657064217023141 0ustar00title = [ "Client: XXXX, Job: XXXX", "Code: XXXX" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/strings.json0000644000000000000000000000042114657064217021254 0ustar00{ "string_array": [ { "type": "string", "value": "all" }, { "type": "string", "value": "strings" }, { "type": "string", "value": "are the same" }, { "type": "string", "value": "type" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/strings.toml0000644000000000000000000000010314657064217021253 0ustar00string_array = [ "all", 'strings', """are the same""", '''type'''] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/table-array-string-backslash.json0000644000000000000000000000015714657064217025231 0ustar00{ "foo": [ { "bar": { "type": "string", "value": "\"{{baz}}\"" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/array/table-array-string-backslash.toml0000644000000000000000000000003714657064217025230 0ustar00foo = [ { bar="\"{{baz}}\""} ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/bool/bool.json0000644000000000000000000000016014657064217020333 0ustar00{ "f": { "type": "bool", "value": "false" }, "t": { "type": "bool", "value": "true" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9882014 tomlkit-0.13.2/tests/toml-test/tests/valid/bool/bool.toml0000644000000000000000000000002314657064217020333 0ustar00t = true f = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/comment/at-eof.json0000644000000000000000000000007614657064217021270 0ustar00{ "key": { "type": "string", "value": "value" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/comment/at-eof.toml0000644000000000000000000000012514657064217021265 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/comment/at-eof2.json0000644000000000000000000000007614657064217021352 0ustar00{ "key": { "type": "string", "value": "value" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/comment/at-eof2.toml0000644000000000000000000000012514657064217021347 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/comment/everywhere.json0000644000000000000000000000050714657064217022301 0ustar00{ "group": { "answer": { "type": "integer", "value": "42" }, "d": { "type": "datetime", "value": "1979-05-27T07:32:12-07:00" }, "more": [ { "type": "integer", "value": "42" }, { "type": "integer", "value": "42" } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/comment/everywhere.toml0000644000000000000000000000105414657064217022301 0ustar00# Top comment. # Top comment. # Top comment. # [no-extraneous-groups-please] [group] # Comment answer = 42 # Comment # no-extraneous-keys-please = 999 # Inbetween comment. more = [ # Comment # What about multiple # comments? # Can you handle it? # # Evil. # Evil. 42, 42, # Comments within arrays are fun. # What about multiple # comments? # Can you handle it? # # Evil. # Evil. # ] Did I fool you? ] # Hopefully not. # Make sure the space between the datetime and "#" isn't lexed. d = 1979-05-27T07:32:12-07:00 # c ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/comment/tricky.json0000644000000000000000000000277114657064217021426 0ustar00{ "hash#tag": { "#!": { "type": "string", "value": "hash bang" }, "arr3": [ { "type": "string", "value": "#" }, { "type": "string", "value": "#" }, { "type": "string", "value": "###" } ], "arr4": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" }, { "type": "integer", "value": "4" } ], "arr5": [ [ [ [ [ { "type": "string", "value": "#" } ] ] ] ] ], "tbl1": { "#": { "type": "string", "value": "}#" } } }, "section": { "8": { "type": "string", "value": "eight" }, "eleven": { "type": "float", "value": "11.1" }, "five": { "type": "float", "value": "5.5" }, "four": { "type": "string", "value": "# no comment\n# nor this\n#also not comment" }, "one": { "type": "string", "value": "11" }, "six": { "type": "integer", "value": "6" }, "ten": { "type": "float", "value": "1000.0" }, "three": { "type": "string", "value": "#" }, "two": { "type": "string", "value": "22#" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/comment/tricky.toml0000644000000000000000000000060114657064217021416 0ustar00[section]#attached comment #[notsection] one = "11"#cmt two = "22#" three = '#' four = """# no comment # nor this #also not comment"""#is_comment five = 5.5#66 six = 6#7 8 = "eight" #nine = 99 ten = 10e2#1 eleven = 1.11e1#23 ["hash#tag"] "#!" = "hash bang" arr3 = [ "#", '#', """###""" ] arr4 = [ 1,# 9, 9, 2#,9 ,#9 3#] ,4] arr5 = [[[[#["#"], ["#"]]]]#] ] tbl1 = { "#" = '}#'}#}} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/datetime.json0000644000000000000000000000023714657064217022042 0ustar00{ "lower": { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, "space": { "type": "datetime", "value": "1987-07-05T17:45:00Z" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/datetime.toml0000644000000000000000000000007214657064217022041 0ustar00space = 1987-07-05 17:45:00Z lower = 1987-07-05t17:45:00z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/local-date.json0000644000000000000000000000011714657064217022250 0ustar00{ "bestdayever": { "type": "date-local", "value": "1987-07-05" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/local-date.toml0000644000000000000000000000003114657064217022245 0ustar00bestdayever = 1987-07-05 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/local-time.json0000644000000000000000000000023514657064217022272 0ustar00{ "besttimeever": { "type": "time-local", "value": "17:45:00" }, "milliseconds": { "type": "time-local", "value": "10:32:00.555" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/local-time.toml0000644000000000000000000000006414657064217022274 0ustar00besttimeever = 17:45:00 milliseconds = 10:32:00.555 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/local.json0000644000000000000000000000040014657064217021330 0ustar00{ "local": { "type": "datetime-local", "value": "1987-07-05T17:45:00" }, "milli": { "type": "datetime-local", "value": "1977-12-21T10:32:00.555" }, "space": { "type": "datetime-local", "value": "1987-07-05T17:45:00" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/local.toml0000644000000000000000000000013014657064217021332 0ustar00local = 1987-07-05T17:45:00 milli = 1977-12-21T10:32:00.555 space = 1987-07-05 17:45:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/milliseconds.json0000644000000000000000000000053714657064217022736 0ustar00{ "utc1": { "type": "datetime", "value": "1987-07-05T17:45:56.123456Z" }, "utc2": { "type": "datetime", "value": "1987-07-05T17:45:56.600000Z" }, "wita1": { "type": "datetime", "value": "1987-07-05T17:45:56.123456+08:00" }, "wita2": { "type": "datetime", "value": "1987-07-05T17:45:56.600000+08:00" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/milliseconds.toml0000644000000000000000000000022014657064217022725 0ustar00utc1 = 1987-07-05T17:45:56.123456Z utc2 = 1987-07-05T17:45:56.6Z wita1 = 1987-07-05T17:45:56.123456+08:00 wita2 = 1987-07-05T17:45:56.6+08:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/timezone.json0000644000000000000000000000050414657064217022075 0ustar00{ "nzdt": { "type": "datetime", "value": "1987-07-05T17:45:56+13:00" }, "nzst": { "type": "datetime", "value": "1987-07-05T17:45:56+12:00" }, "pdt": { "type": "datetime", "value": "1987-07-05T17:45:56-05:00" }, "utc": { "type": "datetime", "value": "1987-07-05T17:45:56Z" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/datetime/timezone.toml0000644000000000000000000000020614657064217022076 0ustar00utc = 1987-07-05T17:45:56Z pdt = 1987-07-05T17:45:56-05:00 nzst = 1987-07-05T17:45:56+12:00 nzdt = 1987-07-05T17:45:56+13:00 # DST ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/empty-file.json0000644000000000000000000000000314657064217020514 0ustar00{} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/empty-file.toml0000644000000000000000000000000014657064217020513 0ustar00././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/example.json0000644000000000000000000000062214657064217020103 0ustar00{ "best-day-ever": { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, "numtheory": { "boring": { "type": "bool", "value": "false" }, "perfection": [ { "type": "integer", "value": "6" }, { "type": "integer", "value": "28" }, { "type": "integer", "value": "496" } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/example.toml0000644000000000000000000000013314657064217020102 0ustar00best-day-ever = 1987-07-05T17:45:00Z [numtheory] boring = false perfection = [6, 28, 496] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/exponent.json0000644000000000000000000000075114657064217021420 0ustar00{ "lower": { "type": "float", "value": "300.0" }, "minustenth": { "type": "float", "value": "-0.1" }, "neg": { "type": "float", "value": "0.03" }, "pointlower": { "type": "float", "value": "310.0" }, "pointupper": { "type": "float", "value": "310.0" }, "pos": { "type": "float", "value": "300.0" }, "upper": { "type": "float", "value": "300.0" }, "zero": { "type": "float", "value": "3.0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/exponent.toml0000644000000000000000000000016214657064217021416 0ustar00lower = 3e2 upper = 3E2 neg = 3e-2 pos = 3E+2 zero = 3e0 pointlower = 3.1e2 pointupper = 3.1E2 minustenth = -1E-1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/float.json0000644000000000000000000000036514657064217020666 0ustar00{ "negpi": { "type": "float", "value": "-3.14" }, "pi": { "type": "float", "value": "3.14" }, "pospi": { "type": "float", "value": "3.14" }, "zero-intpart": { "type": "float", "value": "0.123" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/float.toml0000644000000000000000000000007314657064217020664 0ustar00pi = 3.14 pospi = +3.14 negpi = -3.14 zero-intpart = 0.123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/inf-and-nan.json0000644000000000000000000000056614657064217021652 0ustar00{ "infinity": { "type": "float", "value": "inf" }, "infinity_neg": { "type": "float", "value": "-inf" }, "infinity_plus": { "type": "float", "value": "+inf" }, "nan": { "type": "float", "value": "nan" }, "nan_neg": { "type": "float", "value": "nan" }, "nan_plus": { "type": "float", "value": "nan" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/inf-and-nan.toml0000644000000000000000000000035014657064217021643 0ustar00# We don't encode +nan and -nan back with the signs; many languages don't # support a sign on NaN (it doesn't really make much sense). nan = nan nan_neg = -nan nan_plus = +nan infinity = inf infinity_neg = -inf infinity_plus = +inf ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/long.json0000644000000000000000000000023114657064217020510 0ustar00{ "longpi": { "type": "float", "value": "3.141592653589793" }, "neglongpi": { "type": "float", "value": "-3.141592653589793" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/long.toml0000644000000000000000000000007214657064217020515 0ustar00longpi = 3.141592653589793 neglongpi = -3.141592653589793 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/underscore.json0000644000000000000000000000030414657064217021723 0ustar00{ "after": { "type": "float", "value": "3141.5927" }, "before": { "type": "float", "value": "3141.5927" }, "exponent": { "type": "float", "value": "3.0e14" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/underscore.toml0000644000000000000000000000007014657064217021725 0ustar00before = 3_141.5927 after = 3141.592_7 exponent = 3e1_4 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/zero.json0000644000000000000000000000056614657064217020543 0ustar00{ "f1": { "type": "float", "value": "0" }, "f2": { "type": "float", "value": "0" }, "f3": { "type": "float", "value": "0" }, "f4": { "type": "float", "value": "0" }, "f5": { "type": "float", "value": "0" }, "f6": { "type": "float", "value": "0" }, "f7": { "type": "float", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/float/zero.toml0000644000000000000000000000010414657064217020531 0ustar00f1 = 0.0 f2 = +0.0 f3 = -0.0 f4 = 0e0 f5 = 0e00 f6 = +0e0 f7 = -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/implicit-and-explicit-after.json0000644000000000000000000000031614657064217023740 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } }, "better": { "type": "integer", "value": "43" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/implicit-and-explicit-after.toml0000644000000000000000000000004514657064217023741 0ustar00[a.b.c] answer = 42 [a] better = 43 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/implicit-and-explicit-before.json0000644000000000000000000000031614657064217024101 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } }, "better": { "type": "integer", "value": "43" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/implicit-and-explicit-before.toml0000644000000000000000000000004514657064217024102 0ustar00[a] better = 43 [a.b.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/implicit-groups.json0000644000000000000000000000021214657064217021572 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/implicit-groups.toml0000644000000000000000000000002414657064217021575 0ustar00[a.b.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/array.json0000644000000000000000000000104714657064217022133 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } }, { "first_name": { "type": "string", "value": "Eric" }, "last_name": { "type": "string", "value": "Clapton" } }, { "first_name": { "type": "string", "value": "Bob" }, "last_name": { "type": "string", "value": "Seger" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/array.toml0000644000000000000000000000025214657064217022132 0ustar00people = [{first_name = "Bruce", last_name = "Springsteen"}, {first_name = "Eric", last_name = "Clapton"}, {first_name = "Bob", last_name = "Seger"}] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/bool.json0000644000000000000000000000021514657064217021744 0ustar00{ "a": { "a": { "type": "bool", "value": "true" }, "b": { "type": "bool", "value": "false" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/bool.toml0000644000000000000000000000003214657064217021743 0ustar00a = {a = true, b = false} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/empty.json0000644000000000000000000000056314657064217022155 0ustar00{ "empty1": {}, "empty2": {}, "empty_in_array": [ { "not_empty": { "type": "integer", "value": "1" } }, {} ], "empty_in_array2": [ {}, { "not_empty": { "type": "integer", "value": "1" } } ], "many_empty": [ {}, {}, {} ], "nested_empty": { "empty": {} } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/empty.toml0000644000000000000000000000023514657064217022153 0ustar00empty1 = {} empty2 = { } empty_in_array = [ { not_empty = 1 }, {} ] empty_in_array2 = [{},{not_empty=1}] many_empty = [{},{},{}] nested_empty = {"empty"={}} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/end-in-bool.json0000644000000000000000000000037314657064217023121 0ustar00{ "black": { "allow_prereleases": { "type": "bool", "value": "true" }, "python": { "type": "string", "value": "\u003e3.6" }, "version": { "type": "string", "value": "\u003e=18.9b0" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/end-in-bool.toml0000644000000000000000000000010614657064217023115 0ustar00black = { python=">3.6", version=">=18.9b0", allow_prereleases=true } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/inline-table.json0000644000000000000000000000121414657064217023354 0ustar00{ "name": { "first": { "type": "string", "value": "Tom" }, "last": { "type": "string", "value": "Preston-Werner" } }, "point": { "x": { "type": "integer", "value": "1" }, "y": { "type": "integer", "value": "2" } }, "simple": { "a": { "type": "integer", "value": "1" } }, "str-key": { "a": { "type": "integer", "value": "1" } }, "table-array": [ { "a": { "type": "integer", "value": "1" } }, { "b": { "type": "integer", "value": "2" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/inline-table.toml0000644000000000000000000000023514657064217023360 0ustar00name = { first = "Tom", last = "Preston-Werner" } point = { x = 1, y = 2 } simple = { a = 1 } str-key = { "a" = 1 } table-array = [{ "a" = 1 }, { "b" = 2 }] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/key-dotted.json0000644000000000000000000000402714657064217023067 0ustar00{ "a": { "a": { "b": { "type": "integer", "value": "1" } } }, "arr": [ { "T": { "a": { "b": { "type": "integer", "value": "1" } } }, "t": { "a": { "b": { "type": "integer", "value": "1" } } } }, { "T": { "a": { "b": { "type": "integer", "value": "2" } } }, "t": { "a": { "b": { "type": "integer", "value": "2" } } } } ], "b": { "a": { "b": { "type": "integer", "value": "1" } } }, "c": { "a": { "b": { "type": "integer", "value": "1" } } }, "d": { "a": { "b": { "type": "integer", "value": "1" } } }, "e": { "a": { "b": { "type": "integer", "value": "1" } } }, "inline": { "a": { "b": { "type": "integer", "value": "42" } } }, "many": { "dots": { "here": { "dot": { "dot": { "dot": { "a": { "b": { "c": { "type": "integer", "value": "1" }, "d": { "type": "integer", "value": "2" } } } } } } } } }, "tbl": { "a": { "b": { "c": { "d": { "e": { "type": "integer", "value": "1" } } } } }, "x": { "a": { "b": { "c": { "d": { "e": { "type": "integer", "value": "1" } } } } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/key-dotted.toml0000644000000000000000000000046414657064217023072 0ustar00inline = {a.b = 42} many.dots.here.dot.dot.dot = {a.b.c = 1, a.b.d = 2} a = { a.b = 1 } b = { "a"."b" = 1 } c = { a . b = 1 } d = { 'a' . "b" = 1 } e = {a.b=1} [tbl] a.b.c = {d.e=1} [tbl.x] a.b.c = {d.e=1} [[arr]] t = {a.b=1} T = {a.b=1} [[arr]] t = {a.b=2} T = {a.b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/multiline.json0000644000000000000000000000046014657064217023015 0ustar00{ "tbl_multiline": { "a": { "type": "integer", "value": "1" }, "b": { "type": "string", "value": "multiline\n" }, "c": { "type": "string", "value": "and yet\nanother line" }, "d": { "type": "integer", "value": "4" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/multiline.toml0000644000000000000000000000013014657064217023011 0ustar00tbl_multiline = { a = 1, b = """ multiline """, c = """and yet another line""", d = 4 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/nest.json0000644000000000000000000000152714657064217021771 0ustar00{ "arr_arr_tbl_empty": [ [ {} ] ], "arr_arr_tbl_val": [ [ { "one": { "type": "integer", "value": "1" } } ] ], "arr_arr_tbls": [ [ { "one": { "type": "integer", "value": "1" } }, { "two": { "type": "integer", "value": "2" } } ] ], "arr_tbl_tbl": [ { "tbl": { "one": { "type": "integer", "value": "1" } } } ], "tbl_arr_tbl": { "arr_tbl": [ { "one": { "type": "integer", "value": "1" } } ] }, "tbl_tbl_empty": { "tbl_0": {} }, "tbl_tbl_val": { "tbl_1": { "one": { "type": "integer", "value": "1" } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/inline-table/nest.toml0000644000000000000000000000056414657064217021773 0ustar00tbl_tbl_empty = { tbl_0 = {} } tbl_tbl_val = { tbl_1 = { one = 1 } } tbl_arr_tbl = { arr_tbl = [ { one = 1 } ] } arr_tbl_tbl = [ { tbl = { one = 1 } } ] # Array-of-array-of-table is interesting because it can only # be represented in inline form. arr_arr_tbl_empty = [ [ {} ] ] arr_arr_tbl_val = [ [ { one = 1 } ] ] arr_arr_tbls = [ [ { one = 1 }, { two = 2 } ] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/integer.json0000644000000000000000000000036714657064217021550 0ustar00{ "answer": { "type": "integer", "value": "42" }, "neganswer": { "type": "integer", "value": "-42" }, "posanswer": { "type": "integer", "value": "42" }, "zero": { "type": "integer", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/integer.toml0000644000000000000000000000006514657064217021545 0ustar00answer = 42 posanswer = +42 neganswer = -42 zero = 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/literals.json0000644000000000000000000000105514657064217021725 0ustar00{ "bin1": { "type": "integer", "value": "214" }, "bin2": { "type": "integer", "value": "5" }, "hex1": { "type": "integer", "value": "3735928559" }, "hex2": { "type": "integer", "value": "3735928559" }, "hex3": { "type": "integer", "value": "3735928559" }, "hex4": { "type": "integer", "value": "2439" }, "oct1": { "type": "integer", "value": "342391" }, "oct2": { "type": "integer", "value": "493" }, "oct3": { "type": "integer", "value": "501" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/literals.toml0000644000000000000000000000022714657064217021727 0ustar00bin1 = 0b11010110 bin2 = 0b1_0_1 oct1 = 0o01234567 oct2 = 0o755 oct3 = 0o7_6_5 hex1 = 0xDEADBEEF hex2 = 0xdeadbeef hex3 = 0xdead_beef hex4 = 0x00987 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/long.json0000644000000000000000000000025014657064217021041 0ustar00{ "int64-max": { "type": "integer", "value": "9223372036854775807" }, "int64-max-neg": { "type": "integer", "value": "-9223372036854775808" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/long.toml0000644000000000000000000000010514657064217021042 0ustar00int64-max = 9223372036854775807 int64-max-neg = -9223372036854775808 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/underscore.json0000644000000000000000000000017014657064217022254 0ustar00{ "kilo": { "type": "integer", "value": "1000" }, "x": { "type": "integer", "value": "1111" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/underscore.toml0000644000000000000000000000003114657064217022252 0ustar00kilo = 1_000 x = 1_1_1_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/zero.json0000644000000000000000000000122714657064217021066 0ustar00{ "a2": { "type": "integer", "value": "0" }, "a3": { "type": "integer", "value": "0" }, "b1": { "type": "integer", "value": "0" }, "b2": { "type": "integer", "value": "0" }, "b3": { "type": "integer", "value": "0" }, "d1": { "type": "integer", "value": "0" }, "d2": { "type": "integer", "value": "0" }, "d3": { "type": "integer", "value": "0" }, "h1": { "type": "integer", "value": "0" }, "h2": { "type": "integer", "value": "0" }, "h3": { "type": "integer", "value": "0" }, "o1": { "type": "integer", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/integer/zero.toml0000644000000000000000000000017214657064217021066 0ustar00d1 = 0 d2 = +0 d3 = -0 h1 = 0x0 h2 = 0x00 h3 = 0x00000 o1 = 0o0 a2 = 0o00 a3 = 0o00000 b1 = 0b0 b2 = 0b00 b3 = 0b00000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/alphanum.json0000644000000000000000000000123014657064217021041 0ustar00{ "000111": { "type": "string", "value": "leading" }, "10e3": { "type": "string", "value": "false float" }, "123": { "type": "string", "value": "num" }, "2018_10": { "001": { "type": "integer", "value": "1" } }, "34-11": { "type": "integer", "value": "23" }, "a-a-a": { "_": { "type": "bool", "value": "false" } }, "alpha": { "type": "string", "value": "a" }, "one1two2": { "type": "string", "value": "mixed" }, "under_score": { "type": "string", "value": "___" }, "with-dash": { "type": "string", "value": "dashed" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/alphanum.toml0000644000000000000000000000025514657064217021051 0ustar00alpha = "a" 123 = "num" 000111 = "leading" 10e3 = "false float" one1two2 = "mixed" with-dash = "dashed" under_score = "___" 34-11 = 23 [2018_10] 001 = 1 [a-a-a] _ = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/case-sensitive.json0000644000000000000000000000117114657064217022162 0ustar00{ "Section": { "M": { "type": "string", "value": "latin letter M" }, "name": { "type": "string", "value": "different section!!" }, "Μ": { "type": "string", "value": "greek capital letter MU" }, "μ": { "type": "string", "value": "greek small letter mu" } }, "sectioN": { "type": "string", "value": "NN" }, "section": { "NAME": { "type": "string", "value": "upper" }, "Name": { "type": "string", "value": "capitalized" }, "name": { "type": "string", "value": "lower" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/case-sensitive.toml0000644000000000000000000000031314657064217022161 0ustar00sectioN = "NN" [section] name = "lower" NAME = "upper" Name = "capitalized" [Section] name = "different section!!" "μ" = "greek small letter mu" "Μ" = "greek capital letter MU" M = "latin letter M" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/dotted.json0000644000000000000000000000374114657064217020530 0ustar00{ "a": { "few": { "dots": { "polka": { "dance-with": { "type": "string", "value": "Dot" }, "dot": { "type": "string", "value": "again?" } } } } }, "arr": [ { "a": { "b": { "c": { "type": "integer", "value": "1" }, "d": { "type": "integer", "value": "2" } } } }, { "a": { "b": { "c": { "type": "integer", "value": "3" }, "d": { "type": "integer", "value": "4" } } } } ], "count": { "a": { "type": "integer", "value": "1" }, "b": { "type": "integer", "value": "2" }, "c": { "type": "integer", "value": "3" }, "d": { "type": "integer", "value": "4" }, "e": { "type": "integer", "value": "5" }, "f": { "type": "integer", "value": "6" }, "g": { "type": "integer", "value": "7" }, "h": { "type": "integer", "value": "8" }, "i": { "type": "integer", "value": "9" }, "j": { "type": "integer", "value": "10" }, "k": { "type": "integer", "value": "11" }, "l": { "type": "integer", "value": "12" } }, "many": { "dots": { "here": { "dot": { "dot": { "dot": { "type": "integer", "value": "42" } } } } } }, "name": { "first": { "type": "string", "value": "Arthur" }, "last": { "type": "string", "value": "Dent" } }, "tbl": { "a": { "b": { "c": { "type": "float", "value": "42.666" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/dotted.toml0000644000000000000000000000102714657064217020525 0ustar00# Note: this file contains literal tab characters. name.first = "Arthur" "name".'last' = "Dent" many.dots.here.dot.dot.dot = 42 # Space are ignored, and key parts can be quoted. count.a = 1 count . b = 2 "count"."c" = 3 "count" . "d" = 4 'count'.'e' = 5 'count' . 'f' = 6 "count".'g' = 7 "count" . 'h' = 8 count.'i' = 9 count . 'j' = 10 "count".k = 11 "count" . l = 12 [tbl] a.b.c = 42.666 [a.few.dots] polka.dot = "again?" polka.dance-with = "Dot" [[arr]] a.b.c=1 a.b.d=2 [[arr]] a.b.c=3 a.b.d=4 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/empty.json0000644000000000000000000000007314657064217020376 0ustar00{ "": { "type": "string", "value": "blank" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/empty.toml0000644000000000000000000000001514657064217020374 0ustar00"" = "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/equals-nospace.json0000644000000000000000000000007714657064217022164 0ustar00{ "answer": { "type": "integer", "value": "42" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/equals-nospace.toml0000644000000000000000000000001214657064217022153 0ustar00answer=42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/escapes.json0000644000000000000000000000054714657064217020671 0ustar00{ "\n": { "type": "string", "value": "newline" }, "\"": { "type": "string", "value": "just a quote" }, "\"quoted\"": { "quote": { "type": "bool", "value": "true" } }, "a.b": { "À": {} }, "backsp\u0008\u0008": {}, "À": { "type": "string", "value": "latin capital letter A with grave" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/escapes.toml0000644000000000000000000000022514657064217020664 0ustar00"\n" = "newline" "\u00c0" = "latin capital letter A with grave" "\"" = "just a quote" ["backsp\b\b"] ["\"quoted\""] quote = true ["a.b"."\u00c0"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/numeric-dotted.json0000644000000000000000000000011614657064217022161 0ustar00{ "1": { "2": { "type": "integer", "value": "3" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/numeric-dotted.toml0000644000000000000000000000001014657064217022154 0ustar001.2 = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/numeric.json0000644000000000000000000000007114657064217020700 0ustar00{ "1": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/numeric.toml0000644000000000000000000000000614657064217020700 0ustar001 = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/quoted-dots.json0000644000000000000000000000073414657064217021514 0ustar00{ "plain": { "type": "integer", "value": "1" }, "plain_table": { "plain": { "type": "integer", "value": "3" }, "with.dot": { "type": "integer", "value": "4" } }, "table": { "withdot": { "key.with.dots": { "type": "integer", "value": "6" }, "plain": { "type": "integer", "value": "5" } } }, "with.dot": { "type": "integer", "value": "2" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/quoted-dots.toml0000644000000000000000000000016014657064217021507 0ustar00plain = 1 "with.dot" = 2 [plain_table] plain = 3 "with.dot" = 4 [table.withdot] plain = 5 "key.with.dots" = 6 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/space.json0000644000000000000000000000007314657064217020333 0ustar00{ "a b": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/space.toml0000644000000000000000000000001214657064217020326 0ustar00"a b" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/special-chars.json0000644000000000000000000000015214657064217021754 0ustar00{ "~!@$^\u0026*()_+-`1234567890[]|/?\u003e\u003c.,;:'": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/special-chars.toml0000644000000000000000000000005214657064217021755 0ustar00"~!@$^&*()_+-`1234567890[]|/?><.,;:'" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/special-word.json0000644000000000000000000000040514657064217021630 0ustar00{ "false": { "type": "bool", "value": "false" }, "inf": { "type": "integer", "value": "100000000" }, "nan": { "type": "string", "value": "ceci n'est pas un nombre" }, "true": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/key/special-word.toml0000644000000000000000000000011114657064217021624 0ustar00false = false true = 1 inf = 100000000 nan = "ceci n'est pas un nombre" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/newline-crlf.json0000644000000000000000000000017114657064217021034 0ustar00{ "newline": { "type": "string", "value": "crlf" }, "os": { "type": "string", "value": "DOS" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/newline-crlf.toml0000644000000000000000000000003614657064217021036 0ustar00os = "DOS" newline = "crlf" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/newline-lf.json0000644000000000000000000000017014657064217020506 0ustar00{ "newline": { "type": "string", "value": "lf" }, "os": { "type": "string", "value": "unix" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/newline-lf.toml0000644000000000000000000000003314657064217020506 0ustar00os = "unix" newline = "lf" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/spec-example-1-compact.json0000644000000000000000000000311314657064217022613 0ustar00{ "clients": { "data": [ [ { "type": "string", "value": "gamma" }, { "type": "string", "value": "delta" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ] ], "hosts": [ { "type": "string", "value": "alpha" }, { "type": "string", "value": "omega" } ] }, "database": { "connection_max": { "type": "integer", "value": "5000" }, "enabled": { "type": "bool", "value": "true" }, "ports": [ { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8002" } ], "server": { "type": "string", "value": "192.168.1.1" } }, "owner": { "dob": { "type": "datetime", "value": "1979-05-27T07:32:00-08:00" }, "name": { "type": "string", "value": "Lance Uppercut" } }, "servers": { "alpha": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.1" } }, "beta": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.2" } } }, "title": { "type": "string", "value": "TOML Example" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/spec-example-1-compact.toml0000644000000000000000000000057014657064217022621 0ustar00#Useless spaces eliminated. title="TOML Example" [owner] name="Lance Uppercut" dob=1979-05-27T07:32:00-08:00#First class dates [database] server="192.168.1.1" ports=[8001,8001,8002] connection_max=5000 enabled=true [servers] [servers.alpha] ip="10.0.0.1" dc="eqdc10" [servers.beta] ip="10.0.0.2" dc="eqdc10" [clients] data=[["gamma","delta"],[1,2]] hosts=[ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/spec-example-1.json0000644000000000000000000000311314657064217021167 0ustar00{ "clients": { "data": [ [ { "type": "string", "value": "gamma" }, { "type": "string", "value": "delta" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ] ], "hosts": [ { "type": "string", "value": "alpha" }, { "type": "string", "value": "omega" } ] }, "database": { "connection_max": { "type": "integer", "value": "5000" }, "enabled": { "type": "bool", "value": "true" }, "ports": [ { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8002" } ], "server": { "type": "string", "value": "192.168.1.1" } }, "owner": { "dob": { "type": "datetime", "value": "1979-05-27T07:32:00-08:00" }, "name": { "type": "string", "value": "Lance Uppercut" } }, "servers": { "alpha": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.1" } }, "beta": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.2" } } }, "title": { "type": "string", "value": "TOML Example" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/spec-example-1.toml0000644000000000000000000000105714657064217021176 0ustar00# This is a TOML document. Boom. title = "TOML Example" [owner] name = "Lance Uppercut" dob = 1979-05-27T07:32:00-08:00 # First class dates? Why not? [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # You can indent as you please. Tabs or spaces. TOML don't care. [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/double-quote-escape.json0000644000000000000000000000010114657064217023611 0ustar00{ "test": { "type": "string", "value": "\"one\"" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/double-quote-escape.toml0000644000000000000000000000002114657064217023614 0ustar00test = "\"one\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/empty.json0000644000000000000000000000007414657064217021115 0ustar00{ "answer": { "type": "string", "value": "" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/empty.toml0000644000000000000000000000001414657064217021111 0ustar00answer = "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/escape-tricky.json0000644000000000000000000000115514657064217022523 0ustar00{ "end_esc": { "type": "string", "value": "String does not end here\" but ends here\\" }, "lit_end_esc": { "type": "string", "value": "String ends here\\" }, "lit_multiline_end": { "type": "string", "value": "There is no escape\\" }, "lit_multiline_not_unicode": { "type": "string", "value": "\\u007f" }, "multiline_end_esc": { "type": "string", "value": "When will it end? \"\"\"...\"\"\" should be here\"" }, "multiline_not_unicode": { "type": "string", "value": "\\u0041" }, "multiline_unicode": { "type": "string", "value": " " } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/escape-tricky.toml0000644000000000000000000000051014657064217022517 0ustar00end_esc = "String does not end here\" but ends here\\" lit_end_esc = 'String ends here\' multiline_unicode = """ \u00a0""" multiline_not_unicode = """ \\u0041""" multiline_end_esc = """When will it end? \"""...""\" should be here\"""" lit_multiline_not_unicode = ''' \u007f''' lit_multiline_end = '''There is no escape\''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/escaped-escape.json0000644000000000000000000000010114657064217022610 0ustar00{ "answer": { "type": "string", "value": "\\x64" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/escaped-escape.toml0000644000000000000000000000002114657064217022613 0ustar00answer = "\\x64" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/escapes.json0000644000000000000000000000251114657064217021400 0ustar00{ "backslash": { "type": "string", "value": "This string has a \\ backslash character." }, "backspace": { "type": "string", "value": "This string has a \u0008 backspace character." }, "carriage": { "type": "string", "value": "This string has a \r carriage return character." }, "delete": { "type": "string", "value": "This string has a  delete control code." }, "formfeed": { "type": "string", "value": "This string has a \u000c form feed character." }, "newline": { "type": "string", "value": "This string has a \n new line character." }, "notunicode1": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "notunicode2": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "notunicode3": { "type": "string", "value": "This string does not have a unicode \\u0075 escape." }, "notunicode4": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "quote": { "type": "string", "value": "This string has a \" quote character." }, "tab": { "type": "string", "value": "This string has a \t tab character." }, "unitseparator": { "type": "string", "value": "This string has a \u001f unit separator control code." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/escapes.toml0000644000000000000000000000140314657064217021401 0ustar00backspace = "This string has a \b backspace character." tab = "This string has a \t tab character." newline = "This string has a \n new line character." formfeed = "This string has a \f form feed character." carriage = "This string has a \r carriage return character." quote = "This string has a \" quote character." backslash = "This string has a \\ backslash character." notunicode1 = "This string does not have a unicode \\u escape." notunicode2 = "This string does not have a unicode \u005Cu escape." notunicode3 = "This string does not have a unicode \\u0075 escape." notunicode4 = "This string does not have a unicode \\\u0075 escape." delete = "This string has a \u007F delete control code." unitseparator = "This string has a \u001F unit separator control code." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/multiline-json0000644000000000000000000000205714657064217021763 0ustar00{ "equivalent_one": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "equivalent_three": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "equivalent_two": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "escape-bs-1": { "type": "string", "value": "a \\\nb" }, "escape-bs-2": { "type": "string", "value": "a \\b" }, "escape-bs-3": { "type": "string", "value": "a \\\\\n b" }, "keep-ws-before": { "type": "string", "value": "a \tb" }, "multiline_empty_four": { "type": "string", "value": "" }, "multiline_empty_one": { "type": "string", "value": "" }, "multiline_empty_three": { "type": "string", "value": "" }, "multiline_empty_two": { "type": "string", "value": "" }, "no-space": { "type": "string", "value": "ab" }, "whitespace-after-bs": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/multiline-quotes.json0000644000000000000000000000134014657064217023274 0ustar00{ "lit_one": { "type": "string", "value": "'one quote'" }, "lit_one_space": { "type": "string", "value": " 'one quote' " }, "lit_two": { "type": "string", "value": "''two quotes''" }, "lit_two_space": { "type": "string", "value": " ''two quotes'' " }, "mismatch1": { "type": "string", "value": "aaa'''bbb" }, "mismatch2": { "type": "string", "value": "aaa\"\"\"bbb" }, "one": { "type": "string", "value": "\"one quote\"" }, "one_space": { "type": "string", "value": " \"one quote\" " }, "two": { "type": "string", "value": "\"\"two quotes\"\"" }, "two_space": { "type": "string", "value": " \"\"two quotes\"\" " } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/multiline-quotes.toml0000644000000000000000000000070014657064217023275 0ustar00# Make sure that quotes inside multiline strings are allowed, including right # after the opening '''/""" and before the closing '''/""" lit_one = ''''one quote'''' lit_two = '''''two quotes''''' lit_one_space = ''' 'one quote' ''' lit_two_space = ''' ''two quotes'' ''' one = """"one quote"""" two = """""two quotes""""" one_space = """ "one quote" """ two_space = """ ""two quotes"" """ mismatch1 = """aaa'''bbb""" mismatch2 = '''aaa"""bbb''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/multiline-toml0000644000000000000000000000131714657064217021763 0ustar00# NOTE: this file includes some literal tab characters. multiline_empty_one = """""" multiline_empty_two = """ """ multiline_empty_three = """\ """ multiline_empty_four = """\ \ \ """ equivalent_one = "The quick brown fox jumps over the lazy dog." equivalent_two = """ The quick brown \ fox jumps over \ the lazy dog.""" equivalent_three = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ whitespace-after-bs = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ no-space = """a\ b""" keep-ws-before = """a \ b""" escape-bs-1 = """a \\ b""" escape-bs-2 = """a \\\ b""" escape-bs-3 = """a \\\\ b""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/nl.json0000644000000000000000000000052114657064217020365 0ustar00{ "lit_nl_end": { "type": "string", "value": "value\\n" }, "lit_nl_mid": { "type": "string", "value": "val\\nue" }, "lit_nl_uni": { "type": "string", "value": "val\\ue" }, "nl_end": { "type": "string", "value": "value\n" }, "nl_mid": { "type": "string", "value": "val\nue" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/nl.toml0000644000000000000000000000016314657064217020371 0ustar00nl_mid = "val\nue" nl_end = """value\n""" lit_nl_end = '''value\n''' lit_nl_mid = 'val\nue' lit_nl_uni = 'val\ue' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/raw-multiline.json0000644000000000000000000000050314657064217022545 0ustar00{ "firstnl": { "type": "string", "value": "This string has a ' quote character." }, "multiline": { "type": "string", "value": "This string\nhas ' a quote character\nand more than\none newline\nin it." }, "oneline": { "type": "string", "value": "This string has a ' quote character." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/raw-multiline.toml0000644000000000000000000000030314657064217022545 0ustar00oneline = '''This string has a ' quote character.''' firstnl = ''' This string has a ' quote character.''' multiline = ''' This string has ' a quote character and more than one newline in it.''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/raw.json0000644000000000000000000000127314657064217020552 0ustar00{ "backslash": { "type": "string", "value": "This string has a \\\\ backslash character." }, "backspace": { "type": "string", "value": "This string has a \\b backspace character." }, "carriage": { "type": "string", "value": "This string has a \\r carriage return character." }, "formfeed": { "type": "string", "value": "This string has a \\f form feed character." }, "newline": { "type": "string", "value": "This string has a \\n new line character." }, "slash": { "type": "string", "value": "This string has a \\/ slash character." }, "tab": { "type": "string", "value": "This string has a \\t tab character." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/raw.toml0000644000000000000000000000056514657064217020557 0ustar00backspace = 'This string has a \b backspace character.' tab = 'This string has a \t tab character.' newline = 'This string has a \n new line character.' formfeed = 'This string has a \f form feed character.' carriage = 'This string has a \r carriage return character.' slash = 'This string has a \/ slash character.' backslash = 'This string has a \\ backslash character.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/simple.json0000644000000000000000000000013714657064217021250 0ustar00{ "answer": { "type": "string", "value": "You are not drinking enough whisky." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/simple.toml0000644000000000000000000000005714657064217021253 0ustar00answer = "You are not drinking enough whisky." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/unicode-escape.json0000644000000000000000000000017314657064217022643 0ustar00{ "answer4": { "type": "string", "value": "δ" }, "answer8": { "type": "string", "value": "δ" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/unicode-escape.toml0000644000000000000000000000005214657064217022641 0ustar00answer4 = "\u03B4" answer8 = "\U000003B4" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/unicode-literal.json0000644000000000000000000000007614657064217023041 0ustar00{ "answer": { "type": "string", "value": "δ" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/unicode-literal.toml0000644000000000000000000000001614657064217023035 0ustar00answer = "δ" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/with-pound.json0000644000000000000000000000026714657064217022061 0ustar00{ "pound": { "type": "string", "value": "We see no # comments here." }, "poundcomment": { "type": "string", "value": "But there are # some comments here." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/string/with-pound.toml0000644000000000000000000000016114657064217022054 0ustar00pound = "We see no # comments here." poundcomment = "But there are # some comments here." # Did I # mess you up? ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-implicit.json0000644000000000000000000000022314657064217022462 0ustar00{ "albums": { "songs": [ { "name": { "type": "string", "value": "Glory Days" } } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-implicit.toml0000644000000000000000000000004514657064217022466 0ustar00[[albums.songs]] name = "Glory Days" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9922013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-many.json0000644000000000000000000000104714657064217021621 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } }, { "first_name": { "type": "string", "value": "Eric" }, "last_name": { "type": "string", "value": "Clapton" } }, { "first_name": { "type": "string", "value": "Bob" }, "last_name": { "type": "string", "value": "Seger" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-many.toml0000644000000000000000000000024314657064217021620 0ustar00[[people]] first_name = "Bruce" last_name = "Springsteen" [[people]] first_name = "Eric" last_name = "Clapton" [[people]] first_name = "Bob" last_name = "Seger" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-nest.json0000644000000000000000000000136214657064217021626 0ustar00{ "albums": [ { "name": { "type": "string", "value": "Born to Run" }, "songs": [ { "name": { "type": "string", "value": "Jungleland" } }, { "name": { "type": "string", "value": "Meeting Across the River" } } ] }, { "name": { "type": "string", "value": "Born in the USA" }, "songs": [ { "name": { "type": "string", "value": "Glory Days" } }, { "name": { "type": "string", "value": "Dancing in the Dark" } } ] } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-nest.toml0000644000000000000000000000040614657064217021626 0ustar00[[albums]] name = "Born to Run" [[albums.songs]] name = "Jungleland" [[albums.songs]] name = "Meeting Across the River" [[albums]] name = "Born in the USA" [[albums.songs]] name = "Glory Days" [[albums.songs]] name = "Dancing in the Dark" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-one.json0000644000000000000000000000031214657064217021430 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-one.toml0000644000000000000000000000007214657064217021435 0ustar00[[people]] first_name = "Bruce" last_name = "Springsteen" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-table-array.json0000644000000000000000000000052314657064217023056 0ustar00{ "a": [ { "b": [ { "c": { "d": { "type": "string", "value": "val0" } } }, { "c": { "d": { "type": "string", "value": "val1" } } } ] } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/array-table-array.toml0000644000000000000000000000015414657064217023060 0ustar00[[a]] [[a.b]] [a.b.c] d = "val0" [[a.b]] [a.b.c] d = "val1" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/empty.json0000644000000000000000000000001614657064217020672 0ustar00{ "a": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/empty.toml0000644000000000000000000000000414657064217020671 0ustar00[a] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/keyword.json0000644000000000000000000000007214657064217021222 0ustar00{ "true": {}, "false": {}, "inf": {}, "nan": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/keyword.toml0000644000000000000000000000004014657064217021217 0ustar00[true] [false] [inf] [nan] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/names.json0000644000000000000000000000042214657064217020640 0ustar00{ "a": { " x ": {}, "b": { "c": {} }, "b.c": {}, "d.e": {} }, "d": { "e": { "f": {} } }, "g": { "h": { "i": {} } }, "j": { "ʞ": { "l": {} } }, "x": { "1": { "2": {} } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/names.toml0000644000000000000000000000013214657064217020640 0ustar00[a.b.c] [a."b.c"] [a.'d.e'] [a.' x '] [ d.e.f ] [ g . h . i ] [ j . "ʞ" . 'l' ] [x.1.2] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/no-eol.json0000644000000000000000000000002214657064217020722 0ustar00{ "table": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/no-eol.toml0000644000000000000000000000001014657064217020721 0ustar00[table] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/sub-empty.json0000644000000000000000000000003514657064217021462 0ustar00{ "a": { "b": {} } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/sub-empty.toml0000644000000000000000000000001214657064217021457 0ustar00[a] [a.b] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/whitespace.json0000644000000000000000000000002614657064217021671 0ustar00{ "valid key": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/whitespace.toml0000644000000000000000000000001614657064217021672 0ustar00["valid key"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/with-literal-string.json0000644000000000000000000000021614657064217023447 0ustar00{ "a": { "\"b\"": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/with-literal-string.toml0000644000000000000000000000005114657064217023446 0ustar00['a'] [a.'"b"'] [a.'"b"'.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/with-pound.json0000644000000000000000000000013414657064217021633 0ustar00{ "key#group": { "answer": { "type": "integer", "value": "42" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/with-pound.toml0000644000000000000000000000003214657064217021632 0ustar00["key#group"] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/with-single-quotes.json0000644000000000000000000000021214657064217023302 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/with-single-quotes.toml0000644000000000000000000000004514657064217023310 0ustar00['a'] [a.'b'] [a.'b'.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/without-super.json0000644000000000000000000000010714657064217022374 0ustar00{ "x": { "y": { "z": { "w": {} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/tests/valid/table/without-super.toml0000644000000000000000000000017014657064217022376 0ustar00# [x] you # [x.y] don't # [x.y.z] need these [x.y.z.w] # for this to work [x] # defining a super-table afterwards is ok ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.9962013 tomlkit-0.13.2/tests/toml-test/toml.go0000644000000000000000000000613214657064217014620 0ustar00package tomltest import ( "math" "reflect" ) // cmpTOML consumes the recursive structure of both want and have // simultaneously. If anything is unequal the result has failed and comparison // stops. // // reflect.DeepEqual could work here, but it won't tell us how the two // structures are different. func (r Test) cmpTOML(want, have interface{}) Test { if isTomlValue(want) { if !isTomlValue(have) { return r.fail("Type for key '%s' differs:\n"+ " Expected: %[2]v (%[2]T)\n"+ " Your encoder: %[3]v (%[3]T)", r.Key, want, have) } if !deepEqual(want, have) { return r.fail("Values for key '%s' differ:\n"+ " Expected: %[2]v (%[2]T)\n"+ " Your encoder: %[3]v (%[3]T)", r.Key, want, have) } return r } switch w := want.(type) { case map[string]interface{}: return r.cmpTOMLMap(w, have) case []interface{}: return r.cmpTOMLArrays(w, have) default: return r.fail("Unrecognized TOML structure: %T", want) } } func (r Test) cmpTOMLMap(want map[string]interface{}, have interface{}) Test { haveMap, ok := have.(map[string]interface{}) if !ok { return r.mismatch("table", want, haveMap) } // Check that the keys of each map are equivalent. for k := range want { if _, ok := haveMap[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in encoder output", bunk.Key) } } for k := range haveMap { if _, ok := want[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in expected output", bunk.Key) } } // Okay, now make sure that each value is equivalent. for k := range want { if sub := r.kjoin(k).cmpTOML(want[k], haveMap[k]); sub.Failed() { return sub } } return r } func (r Test) cmpTOMLArrays(want []interface{}, have interface{}) Test { // Slice can be decoded to []interface{} for an array of primitives, or // []map[string]interface{} for an array of tables. // // TODO: it would be nicer if it could always decode to []interface{}? haveSlice, ok := have.([]interface{}) if !ok { tblArray, ok := have.([]map[string]interface{}) if !ok { return r.mismatch("array", want, have) } haveSlice = make([]interface{}, len(tblArray)) for i := range tblArray { haveSlice[i] = tblArray[i] } } if len(want) != len(haveSlice) { return r.fail("Array lengths differ for key '%s'"+ " Expected: %[2]v (len=%[4]d)\n"+ " Your encoder: %[3]v (len=%[5]d)", r.Key, want, haveSlice, len(want), len(haveSlice)) } for i := 0; i < len(want); i++ { if sub := r.cmpTOML(want[i], haveSlice[i]); sub.Failed() { return sub } } return r } // reflect.DeepEqual() that deals with NaN != NaN func deepEqual(want, have interface{}) bool { var wantF, haveF float64 switch f := want.(type) { case float32: wantF = float64(f) case float64: wantF = f } switch f := have.(type) { case float32: haveF = float64(f) case float64: haveF = f } if math.IsNaN(wantF) && math.IsNaN(haveF) { return true } return reflect.DeepEqual(want, have) } func isTomlValue(v interface{}) bool { switch v.(type) { case map[string]interface{}, []interface{}: return false } return true } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tests/util.py0000644000000000000000000000241614657064216012715 0ustar00from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Comment from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Item from tomlkit.items import KeyType from tomlkit.items import Null from tomlkit.items import SingleKey as Key from tomlkit.items import String from tomlkit.items import StringType from tomlkit.items import Table from tomlkit.items import Time from tomlkit.items import Trivia from tomlkit.toml_document import TOMLDocument TOMLKIT_TYPES = [ Bool, Comment, InlineTable, Integer, Float, DateTime, Date, Time, Array, KeyType, Key, String, StringType, Table, Trivia, Item, AoT, Null, TOMLDocument, ] def assert_not_tomlkit_type(v): for _, tomlkit_type in enumerate(TOMLKIT_TYPES): assert not isinstance(v, tomlkit_type) def assert_is_ppo(v_unwrapped, unwrapped_type): assert_not_tomlkit_type(v_unwrapped) assert isinstance(v_unwrapped, unwrapped_type) def elementary_test(v, unwrapped_type): v_unwrapped = v.unwrap() assert_is_ppo(v_unwrapped, unwrapped_type) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tomlkit/__init__.py0000644000000000000000000000240214657064216014013 0ustar00from tomlkit.api import TOMLDocument from tomlkit.api import aot from tomlkit.api import array from tomlkit.api import boolean from tomlkit.api import comment from tomlkit.api import date from tomlkit.api import datetime from tomlkit.api import document from tomlkit.api import dump from tomlkit.api import dumps from tomlkit.api import float_ from tomlkit.api import inline_table from tomlkit.api import integer from tomlkit.api import item from tomlkit.api import key from tomlkit.api import key_value from tomlkit.api import load from tomlkit.api import loads from tomlkit.api import nl from tomlkit.api import parse from tomlkit.api import register_encoder from tomlkit.api import string from tomlkit.api import table from tomlkit.api import time from tomlkit.api import unregister_encoder from tomlkit.api import value from tomlkit.api import ws __version__ = "0.13.2" __all__ = [ "aot", "array", "boolean", "comment", "date", "datetime", "document", "dump", "dumps", "float_", "inline_table", "integer", "item", "key", "key_value", "load", "loads", "nl", "parse", "string", "table", "time", "TOMLDocument", "value", "ws", "register_encoder", "unregister_encoder", ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tomlkit/_compat.py0000644000000000000000000000100114657064216013670 0ustar00from __future__ import annotations import contextlib import sys from typing import Any PY38 = sys.version_info >= (3, 8) def decode(string: Any, encodings: list[str] | None = None): if not isinstance(string, bytes): return string encodings = encodings or ["utf-8", "latin1", "ascii"] for encoding in encodings: with contextlib.suppress(UnicodeEncodeError, UnicodeDecodeError): return string.decode(encoding) return string.decode(encodings[0], errors="ignore") ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tomlkit/_types.py0000644000000000000000000000507314657064216013566 0ustar00from __future__ import annotations from typing import TYPE_CHECKING from typing import Any from typing import TypeVar WT = TypeVar("WT", bound="WrapperType") if TYPE_CHECKING: # pragma: no cover # Define _CustomList and _CustomDict as a workaround for: # https://github.com/python/mypy/issues/11427 # # According to this issue, the typeshed contains a "lie" # (it adds MutableSequence to the ancestry of list and MutableMapping to # the ancestry of dict) which completely messes with the type inference for # Table, InlineTable, Array and Container. # # Importing from builtins is preferred over simple assignment, see issues: # https://github.com/python/mypy/issues/8715 # https://github.com/python/mypy/issues/10068 from builtins import dict as _CustomDict from builtins import float as _CustomFloat from builtins import int as _CustomInt from builtins import list as _CustomList from typing import Callable from typing import Concatenate from typing import ParamSpec from typing import Protocol P = ParamSpec("P") class WrapperType(Protocol): def _new(self: WT, value: Any) -> WT: ... else: from collections.abc import MutableMapping from collections.abc import MutableSequence from numbers import Integral from numbers import Real class _CustomList(MutableSequence, list): """Adds MutableSequence mixin while pretending to be a builtin list""" def __add__(self, other): new_list = self.copy() new_list.extend(other) return new_list def __iadd__(self, other): self.extend(other) return self class _CustomDict(MutableMapping, dict): """Adds MutableMapping mixin while pretending to be a builtin dict""" def __or__(self, other): new_dict = self.copy() new_dict.update(other) return new_dict def __ior__(self, other): self.update(other) return self class _CustomInt(Integral, int): """Adds Integral mixin while pretending to be a builtin int""" class _CustomFloat(Real, float): """Adds Real mixin while pretending to be a builtin float""" def wrap_method( original_method: Callable[Concatenate[WT, P], Any], ) -> Callable[Concatenate[WT, P], Any]: def wrapper(self: WT, *args: P.args, **kwargs: P.kwargs) -> Any: result = original_method(self, *args, **kwargs) if result is NotImplemented: return result return self._new(result) return wrapper ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tomlkit/_utils.py0000644000000000000000000000777114657064216013571 0ustar00from __future__ import annotations import re from collections.abc import Mapping from datetime import date from datetime import datetime from datetime import time from datetime import timedelta from datetime import timezone from typing import Collection from tomlkit._compat import decode RFC_3339_LOOSE = re.compile( "^" r"(([0-9]+)-(\d{2})-(\d{2}))?" # Date "(" "([Tt ])?" # Separator r"(\d{2}):(\d{2}):(\d{2})(\.([0-9]+))?" # Time r"(([Zz])|([\+|\-]([01][0-9]|2[0-3]):([0-5][0-9])))?" # Timezone ")?" "$" ) RFC_3339_DATETIME = re.compile( "^" "([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])" # Date "[Tt ]" # Separator r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.([0-9]+))?" # Time r"(([Zz])|([\+|\-]([01][0-9]|2[0-3]):([0-5][0-9])))?" # Timezone "$" ) RFC_3339_DATE = re.compile("^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$") RFC_3339_TIME = re.compile( r"^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.([0-9]+))?$" ) _utc = timezone(timedelta(), "UTC") def parse_rfc3339(string: str) -> datetime | date | time: m = RFC_3339_DATETIME.match(string) if m: year = int(m.group(1)) month = int(m.group(2)) day = int(m.group(3)) hour = int(m.group(4)) minute = int(m.group(5)) second = int(m.group(6)) microsecond = 0 if m.group(7): microsecond = int((f"{m.group(8):<06s}")[:6]) if m.group(9): # Timezone tz = m.group(9) if tz.upper() == "Z": tzinfo = _utc else: sign = m.group(11)[0] hour_offset, minute_offset = int(m.group(12)), int(m.group(13)) offset = timedelta(seconds=hour_offset * 3600 + minute_offset * 60) if sign == "-": offset = -offset tzinfo = timezone(offset, f"{sign}{m.group(12)}:{m.group(13)}") return datetime( year, month, day, hour, minute, second, microsecond, tzinfo=tzinfo ) else: return datetime(year, month, day, hour, minute, second, microsecond) m = RFC_3339_DATE.match(string) if m: year = int(m.group(1)) month = int(m.group(2)) day = int(m.group(3)) return date(year, month, day) m = RFC_3339_TIME.match(string) if m: hour = int(m.group(1)) minute = int(m.group(2)) second = int(m.group(3)) microsecond = 0 if m.group(4): microsecond = int((f"{m.group(5):<06s}")[:6]) return time(hour, minute, second, microsecond) raise ValueError("Invalid RFC 339 string") # https://toml.io/en/v1.0.0#string CONTROL_CHARS = frozenset(chr(c) for c in range(0x20)) | {chr(0x7F)} _escaped = { "b": "\b", "t": "\t", "n": "\n", "f": "\f", "r": "\r", '"': '"', "\\": "\\", } _compact_escapes = { **{v: f"\\{k}" for k, v in _escaped.items()}, '"""': '""\\"', } _basic_escapes = CONTROL_CHARS | {'"', "\\"} def _unicode_escape(seq: str) -> str: return "".join(f"\\u{ord(c):04x}" for c in seq) def escape_string(s: str, escape_sequences: Collection[str] = _basic_escapes) -> str: s = decode(s) res = [] start = 0 def flush(inc=1): if start != i: res.append(s[start:i]) return i + inc found_sequences = {seq for seq in escape_sequences if seq in s} i = 0 while i < len(s): for seq in found_sequences: seq_len = len(seq) if s[i:].startswith(seq): start = flush(seq_len) res.append(_compact_escapes.get(seq) or _unicode_escape(seq)) i += seq_len - 1 # fast-forward escape sequence i += 1 flush() return "".join(res) def merge_dicts(d1: dict, d2: dict) -> dict: for k, v in d2.items(): if k in d1 and isinstance(d1[k], dict) and isinstance(v, Mapping): merge_dicts(d1[k], v) else: d1[k] = d2[k] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tomlkit/api.py0000644000000000000000000001712314657064216013033 0ustar00from __future__ import annotations import contextlib import datetime as _datetime from collections.abc import Mapping from typing import IO from typing import Iterable from typing import TypeVar from tomlkit._utils import parse_rfc3339 from tomlkit.container import Container from tomlkit.exceptions import UnexpectedCharError from tomlkit.items import CUSTOM_ENCODERS from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Comment from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import DottedKey from tomlkit.items import Encoder from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Item as _Item from tomlkit.items import Key from tomlkit.items import SingleKey from tomlkit.items import String from tomlkit.items import StringType as _StringType from tomlkit.items import Table from tomlkit.items import Time from tomlkit.items import Trivia from tomlkit.items import Whitespace from tomlkit.items import item from tomlkit.parser import Parser from tomlkit.toml_document import TOMLDocument def loads(string: str | bytes) -> TOMLDocument: """ Parses a string into a TOMLDocument. Alias for parse(). """ return parse(string) def dumps(data: Mapping, sort_keys: bool = False) -> str: """ Dumps a TOMLDocument into a string. """ if not isinstance(data, Container) and isinstance(data, Mapping): data = item(dict(data), _sort_keys=sort_keys) try: # data should be a `Container` (and therefore implement `as_string`) # for all type safe invocations of this function return data.as_string() # type: ignore[attr-defined] except AttributeError as ex: msg = f"Expecting Mapping or TOML Container, {type(data)} given" raise TypeError(msg) from ex def load(fp: IO[str] | IO[bytes]) -> TOMLDocument: """ Load toml document from a file-like object. """ return parse(fp.read()) def dump(data: Mapping, fp: IO[str], *, sort_keys: bool = False) -> None: """ Dump a TOMLDocument into a writable file stream. :param data: a dict-like object to dump :param sort_keys: if true, sort the keys in alphabetic order :Example: >>> with open("output.toml", "w") as fp: ... tomlkit.dump(data, fp) """ fp.write(dumps(data, sort_keys=sort_keys)) def parse(string: str | bytes) -> TOMLDocument: """ Parses a string or bytes into a TOMLDocument. """ return Parser(string).parse() def document() -> TOMLDocument: """ Returns a new TOMLDocument instance. """ return TOMLDocument() # Items def integer(raw: str | int) -> Integer: """Create an integer item from a number or string.""" return item(int(raw)) def float_(raw: str | float) -> Float: """Create an float item from a number or string.""" return item(float(raw)) def boolean(raw: str) -> Bool: """Turn `true` or `false` into a boolean item.""" return item(raw == "true") def string( raw: str, *, literal: bool = False, multiline: bool = False, escape: bool = True, ) -> String: """Create a string item. By default, this function will create *single line basic* strings, but boolean flags (e.g. ``literal=True`` and/or ``multiline=True``) can be used for personalization. For more information, please check the spec: ``__. Common escaping rules will be applied for basic strings. This can be controlled by explicitly setting ``escape=False``. Please note that, if you disable escaping, you will have to make sure that the given strings don't contain any forbidden character or sequence. """ type_ = _StringType.select(literal, multiline) return String.from_raw(raw, type_, escape) def date(raw: str) -> Date: """Create a TOML date.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.date): raise ValueError("date() only accepts date strings.") return item(value) def time(raw: str) -> Time: """Create a TOML time.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.time): raise ValueError("time() only accepts time strings.") return item(value) def datetime(raw: str) -> DateTime: """Create a TOML datetime.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.datetime): raise ValueError("datetime() only accepts datetime strings.") return item(value) def array(raw: str = "[]") -> Array: """Create an array item for its string representation. :Example: >>> array("[1, 2, 3]") # Create from a string [1, 2, 3] >>> a = array() >>> a.extend([1, 2, 3]) # Create from a list >>> a [1, 2, 3] """ return value(raw) def table(is_super_table: bool | None = None) -> Table: """Create an empty table. :param is_super_table: if true, the table is a super table :Example: >>> doc = document() >>> foo = table(True) >>> bar = table() >>> bar.update({'x': 1}) >>> foo.append('bar', bar) >>> doc.append('foo', foo) >>> print(doc.as_string()) [foo.bar] x = 1 """ return Table(Container(), Trivia(), False, is_super_table) def inline_table() -> InlineTable: """Create an inline table. :Example: >>> table = inline_table() >>> table.update({'x': 1, 'y': 2}) >>> print(table.as_string()) {x = 1, y = 2} """ return InlineTable(Container(), Trivia(), new=True) def aot() -> AoT: """Create an array of table. :Example: >>> doc = document() >>> aot = aot() >>> aot.append(item({'x': 1})) >>> doc.append('foo', aot) >>> print(doc.as_string()) [[foo]] x = 1 """ return AoT([]) def key(k: str | Iterable[str]) -> Key: """Create a key from a string. When a list of string is given, it will create a dotted key. :Example: >>> doc = document() >>> doc.append(key('foo'), 1) >>> doc.append(key(['bar', 'baz']), 2) >>> print(doc.as_string()) foo = 1 bar.baz = 2 """ if isinstance(k, str): return SingleKey(k) return DottedKey([key(_k) for _k in k]) def value(raw: str) -> _Item: """Parse a simple value from a string. :Example: >>> value("1") 1 >>> value("true") True >>> value("[1, 2, 3]") [1, 2, 3] """ parser = Parser(raw) v = parser._parse_value() if not parser.end(): raise parser.parse_error(UnexpectedCharError, char=parser._current) return v def key_value(src: str) -> tuple[Key, _Item]: """Parse a key-value pair from a string. :Example: >>> key_value("foo = 1") (Key('foo'), 1) """ return Parser(src)._parse_key_value() def ws(src: str) -> Whitespace: """Create a whitespace from a string.""" return Whitespace(src, fixed=True) def nl() -> Whitespace: """Create a newline item.""" return ws("\n") def comment(string: str) -> Comment: """Create a comment item.""" return Comment(Trivia(comment_ws=" ", comment="# " + string)) E = TypeVar("E", bound=Encoder) def register_encoder(encoder: E) -> E: """Add a custom encoder, which should be a function that will be called if the value can't otherwise be converted. It should takes a single value and return a TOMLKit item or raise a ``TypeError``. """ CUSTOM_ENCODERS.append(encoder) return encoder def unregister_encoder(encoder: Encoder) -> None: """Unregister a custom encoder.""" with contextlib.suppress(ValueError): CUSTOM_ENCODERS.remove(encoder) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tomlkit/container.py0000644000000000000000000007143614657064216014253 0ustar00from __future__ import annotations import copy from typing import Any from typing import Iterator from tomlkit._compat import decode from tomlkit._types import _CustomDict from tomlkit._utils import merge_dicts from tomlkit.exceptions import KeyAlreadyPresent from tomlkit.exceptions import NonExistentKey from tomlkit.exceptions import TOMLKitError from tomlkit.items import AoT from tomlkit.items import Comment from tomlkit.items import Item from tomlkit.items import Key from tomlkit.items import Null from tomlkit.items import SingleKey from tomlkit.items import Table from tomlkit.items import Trivia from tomlkit.items import Whitespace from tomlkit.items import item as _item _NOT_SET = object() class Container(_CustomDict): """ A container for items within a TOMLDocument. This class implements the `dict` interface with copy/deepcopy protocol. """ def __init__(self, parsed: bool = False) -> None: self._map: dict[SingleKey, int | tuple[int, ...]] = {} self._body: list[tuple[Key | None, Item]] = [] self._parsed = parsed self._table_keys = [] @property def body(self) -> list[tuple[Key | None, Item]]: return self._body def unwrap(self) -> dict[str, Any]: """Returns as pure python object (ppo)""" unwrapped = {} for k, v in self.items(): if k is None: continue if isinstance(k, Key): k = k.key if hasattr(v, "unwrap"): v = v.unwrap() if k in unwrapped: merge_dicts(unwrapped[k], v) else: unwrapped[k] = v return unwrapped @property def value(self) -> dict[str, Any]: """The wrapped dict value""" d = {} for k, v in self._body: if k is None: continue k = k.key v = v.value if isinstance(v, Container): v = v.value if k in d: merge_dicts(d[k], v) else: d[k] = v return d def parsing(self, parsing: bool) -> None: self._parsed = parsing for _, v in self._body: if isinstance(v, Table): v.value.parsing(parsing) elif isinstance(v, AoT): for t in v.body: t.value.parsing(parsing) def add(self, key: Key | Item | str, item: Item | None = None) -> Container: """ Adds an item to the current Container. :Example: >>> # add a key-value pair >>> doc.add('key', 'value') >>> # add a comment or whitespace or newline >>> doc.add(comment('# comment')) """ if item is None: if not isinstance(key, (Comment, Whitespace)): raise ValueError( "Non comment/whitespace items must have an associated key" ) key, item = None, key return self.append(key, item) def _handle_dotted_key(self, key: Key, value: Item) -> None: if isinstance(value, (Table, AoT)): raise TOMLKitError("Can't add a table to a dotted key") name, *mid, last = key name._dotted = True table = current = Table(Container(True), Trivia(), False, is_super_table=True) for _name in mid: _name._dotted = True new_table = Table(Container(True), Trivia(), False, is_super_table=True) current.append(_name, new_table) current = new_table last.sep = key.sep current.append(last, value) self.append(name, table) return def _get_last_index_before_table(self) -> int: last_index = -1 for i, (k, v) in enumerate(self._body): if isinstance(v, Null): continue # Null elements are inserted after deletion if isinstance(v, Whitespace) and not v.is_fixed(): continue if isinstance(v, (Table, AoT)) and not k.is_dotted(): break last_index = i return last_index + 1 def _validate_out_of_order_table(self, key: SingleKey | None = None) -> None: if key is None: for k in self._map: assert k is not None self._validate_out_of_order_table(k) return if key not in self._map or not isinstance(self._map[key], tuple): return OutOfOrderTableProxy.validate(self, self._map[key]) def append( self, key: Key | str | None, item: Item, validate: bool = True ) -> Container: """Similar to :meth:`add` but both key and value must be given.""" if not isinstance(key, Key) and key is not None: key = SingleKey(key) if not isinstance(item, Item): item = _item(item) if key is not None and key.is_multi(): self._handle_dotted_key(key, item) return self if isinstance(item, (AoT, Table)) and item.name is None: item.name = key.key prev = self._previous_item() prev_ws = isinstance(prev, Whitespace) or ends_with_whitespace(prev) if isinstance(item, Table): if not self._parsed: item.invalidate_display_name() if ( self._body and not (self._parsed or item.trivia.indent or prev_ws) and not key.is_dotted() ): item.trivia.indent = "\n" if isinstance(item, AoT) and self._body and not self._parsed: item.invalidate_display_name() if item and not ("\n" in item[0].trivia.indent or prev_ws): item[0].trivia.indent = "\n" + item[0].trivia.indent if key is not None and key in self: current_idx = self._map[key] if isinstance(current_idx, tuple): current_body_element = self._body[current_idx[-1]] else: current_body_element = self._body[current_idx] current = current_body_element[1] if isinstance(item, Table): if not isinstance(current, (Table, AoT)): raise KeyAlreadyPresent(key) if item.is_aot_element(): # New AoT element found later on # Adding it to the current AoT if not isinstance(current, AoT): current = AoT([current, item], parsed=self._parsed) self._replace(key, key, current) else: current.append(item) return self elif current.is_aot(): if not item.is_aot_element(): # Tried to define a table after an AoT with the same name. raise KeyAlreadyPresent(key) current.append(item) return self elif current.is_super_table(): if item.is_super_table(): # We need to merge both super tables if ( key.is_dotted() or current_body_element[0].is_dotted() or self._table_keys[-1] != current_body_element[0] ): if key.is_dotted() and not self._parsed: idx = self._get_last_index_before_table() else: idx = len(self._body) if idx < len(self._body): self._insert_at(idx, key, item) else: self._raw_append(key, item) if validate: self._validate_out_of_order_table(key) return self # Create a new element to replace the old one current = copy.deepcopy(current) for k, v in item.value.body: current.append(k, v) self._body[ ( current_idx[-1] if isinstance(current_idx, tuple) else current_idx ) ] = (current_body_element[0], current) return self elif current_body_element[0].is_dotted(): raise TOMLKitError("Redefinition of an existing table") elif not item.is_super_table(): raise KeyAlreadyPresent(key) elif isinstance(item, AoT): if not isinstance(current, AoT): # Tried to define an AoT after a table with the same name. raise KeyAlreadyPresent(key) for table in item.body: current.append(table) return self else: raise KeyAlreadyPresent(key) is_table = isinstance(item, (Table, AoT)) if ( key is not None and self._body and not self._parsed and (not is_table or key.is_dotted()) ): # If there is already at least one table in the current container # and the given item is not a table, we need to find the last # item that is not a table and insert after it # If no such item exists, insert at the top of the table last_index = self._get_last_index_before_table() if last_index < len(self._body): return self._insert_at(last_index, key, item) else: previous_item = self._body[-1][1] if not ( isinstance(previous_item, Whitespace) or ends_with_whitespace(previous_item) or "\n" in previous_item.trivia.trail ): previous_item.trivia.trail += "\n" self._raw_append(key, item) return self def _raw_append(self, key: Key | None, item: Item) -> None: if key in self._map: current_idx = self._map[key] if not isinstance(current_idx, tuple): current_idx = (current_idx,) current = self._body[current_idx[-1]][1] if key is not None and not isinstance(current, Table): raise KeyAlreadyPresent(key) self._map[key] = (*current_idx, len(self._body)) elif key is not None: self._map[key] = len(self._body) self._body.append((key, item)) if item.is_table(): self._table_keys.append(key) if key is not None: dict.__setitem__(self, key.key, item.value) def _remove_at(self, idx: int) -> None: key = self._body[idx][0] index = self._map.get(key) if index is None: raise NonExistentKey(key) self._body[idx] = (None, Null()) if isinstance(index, tuple): index = list(index) index.remove(idx) if len(index) == 1: index = index.pop() else: index = tuple(index) self._map[key] = index else: dict.__delitem__(self, key.key) self._map.pop(key) def remove(self, key: Key | str) -> Container: """Remove a key from the container.""" if not isinstance(key, Key): key = SingleKey(key) idx = self._map.pop(key, None) if idx is None: raise NonExistentKey(key) if isinstance(idx, tuple): for i in idx: self._body[i] = (None, Null()) else: self._body[idx] = (None, Null()) dict.__delitem__(self, key.key) return self def _insert_after( self, key: Key | str, other_key: Key | str, item: Any ) -> Container: if key is None: raise ValueError("Key cannot be null in insert_after()") if key not in self: raise NonExistentKey(key) if not isinstance(key, Key): key = SingleKey(key) if not isinstance(other_key, Key): other_key = SingleKey(other_key) item = _item(item) idx = self._map[key] # Insert after the max index if there are many. if isinstance(idx, tuple): idx = max(idx) current_item = self._body[idx][1] if "\n" not in current_item.trivia.trail: current_item.trivia.trail += "\n" # Increment indices after the current index for k, v in self._map.items(): if isinstance(v, tuple): new_indices = [] for v_ in v: if v_ > idx: v_ = v_ + 1 new_indices.append(v_) self._map[k] = tuple(new_indices) elif v > idx: self._map[k] = v + 1 self._map[other_key] = idx + 1 self._body.insert(idx + 1, (other_key, item)) if key is not None: dict.__setitem__(self, other_key.key, item.value) return self def _insert_at(self, idx: int, key: Key | str, item: Any) -> Container: if idx > len(self._body) - 1: raise ValueError(f"Unable to insert at position {idx}") if not isinstance(key, Key): key = SingleKey(key) item = _item(item) if idx > 0: previous_item = self._body[idx - 1][1] if not ( isinstance(previous_item, Whitespace) or ends_with_whitespace(previous_item) or isinstance(item, (AoT, Table)) or "\n" in previous_item.trivia.trail ): previous_item.trivia.trail += "\n" # Increment indices after the current index for k, v in self._map.items(): if isinstance(v, tuple): new_indices = [] for v_ in v: if v_ >= idx: v_ = v_ + 1 new_indices.append(v_) self._map[k] = tuple(new_indices) elif v >= idx: self._map[k] = v + 1 if key in self._map: current_idx = self._map[key] if not isinstance(current_idx, tuple): current_idx = (current_idx,) self._map[key] = (*current_idx, idx) else: self._map[key] = idx self._body.insert(idx, (key, item)) dict.__setitem__(self, key.key, item.value) return self def item(self, key: Key | str) -> Item: """Get an item for the given key.""" if not isinstance(key, Key): key = SingleKey(key) idx = self._map.get(key) if idx is None: raise NonExistentKey(key) if isinstance(idx, tuple): # The item we are getting is an out of order table # so we need a proxy to retrieve the proper objects # from the parent container return OutOfOrderTableProxy(self, idx) return self._body[idx][1] def last_item(self) -> Item | None: """Get the last item.""" if self._body: return self._body[-1][1] def as_string(self) -> str: """Render as TOML string.""" s = "" for k, v in self._body: if k is not None: if isinstance(v, Table): s += self._render_table(k, v) elif isinstance(v, AoT): s += self._render_aot(k, v) else: s += self._render_simple_item(k, v) else: s += self._render_simple_item(k, v) return s def _render_table(self, key: Key, table: Table, prefix: str | None = None) -> str: cur = "" if table.display_name is not None: _key = table.display_name else: _key = key.as_string() if prefix is not None: _key = prefix + "." + _key if not table.is_super_table() or ( any( not isinstance(v, (Table, AoT, Whitespace, Null)) for _, v in table.value.body ) and not key.is_dotted() ): open_, close = "[", "]" if table.is_aot_element(): open_, close = "[[", "]]" newline_in_table_trivia = ( "\n" if "\n" not in table.trivia.trail and len(table.value) > 0 else "" ) cur += ( f"{table.trivia.indent}" f"{open_}" f"{decode(_key)}" f"{close}" f"{table.trivia.comment_ws}" f"{decode(table.trivia.comment)}" f"{table.trivia.trail}" f"{newline_in_table_trivia}" ) elif table.trivia.indent == "\n": cur += table.trivia.indent for k, v in table.value.body: if isinstance(v, Table): if v.is_super_table(): if k.is_dotted() and not key.is_dotted(): # Dotted key inside table cur += self._render_table(k, v) else: cur += self._render_table(k, v, prefix=_key) else: cur += self._render_table(k, v, prefix=_key) elif isinstance(v, AoT): cur += self._render_aot(k, v, prefix=_key) else: cur += self._render_simple_item( k, v, prefix=_key if key.is_dotted() else None ) return cur def _render_aot(self, key, aot, prefix=None): _key = key.as_string() if prefix is not None: _key = prefix + "." + _key cur = "" _key = decode(_key) for table in aot.body: cur += self._render_aot_table(table, prefix=_key) return cur def _render_aot_table(self, table: Table, prefix: str | None = None) -> str: cur = "" _key = prefix or "" open_, close = "[[", "]]" cur += ( f"{table.trivia.indent}" f"{open_}" f"{decode(_key)}" f"{close}" f"{table.trivia.comment_ws}" f"{decode(table.trivia.comment)}" f"{table.trivia.trail}" ) for k, v in table.value.body: if isinstance(v, Table): if v.is_super_table(): if k.is_dotted(): # Dotted key inside table cur += self._render_table(k, v) else: cur += self._render_table(k, v, prefix=_key) else: cur += self._render_table(k, v, prefix=_key) elif isinstance(v, AoT): cur += self._render_aot(k, v, prefix=_key) else: cur += self._render_simple_item(k, v) return cur def _render_simple_item(self, key, item, prefix=None): if key is None: return item.as_string() _key = key.as_string() if prefix is not None: _key = prefix + "." + _key return ( f"{item.trivia.indent}" f"{decode(_key)}" f"{key.sep}" f"{decode(item.as_string())}" f"{item.trivia.comment_ws}" f"{decode(item.trivia.comment)}" f"{item.trivia.trail}" ) def __len__(self) -> int: return dict.__len__(self) def __iter__(self) -> Iterator[str]: return iter(dict.keys(self)) # Dictionary methods def __getitem__(self, key: Key | str) -> Item | Container: item = self.item(key) if isinstance(item, Item) and item.is_boolean(): return item.value return item def __setitem__(self, key: Key | str, value: Any) -> None: if key is not None and key in self: old_key = next(filter(lambda k: k == key, self._map)) self._replace(old_key, key, value) else: self.append(key, value) def __delitem__(self, key: Key | str) -> None: self.remove(key) def setdefault(self, key: Key | str, default: Any) -> Any: super().setdefault(key, default=default) return self[key] def _replace(self, key: Key | str, new_key: Key | str, value: Item) -> None: if not isinstance(key, Key): key = SingleKey(key) idx = self._map.get(key) if idx is None: raise NonExistentKey(key) self._replace_at(idx, new_key, value) def _replace_at( self, idx: int | tuple[int], new_key: Key | str, value: Item ) -> None: value = _item(value) if isinstance(idx, tuple): for i in idx[1:]: self._body[i] = (None, Null()) idx = idx[0] k, v = self._body[idx] if not isinstance(new_key, Key): if ( isinstance(value, (AoT, Table)) != isinstance(v, (AoT, Table)) or new_key != k.key ): new_key = SingleKey(new_key) else: # Inherit the sep of the old key new_key = k del self._map[k] self._map[new_key] = idx if new_key != k: dict.__delitem__(self, k) if isinstance(value, (AoT, Table)) != isinstance(v, (AoT, Table)): # new tables should appear after all non-table values self.remove(k) for i in range(idx, len(self._body)): if isinstance(self._body[i][1], (AoT, Table)): self._insert_at(i, new_key, value) idx = i break else: idx = -1 self.append(new_key, value) else: # Copying trivia if not isinstance(value, (Whitespace, AoT)): value.trivia.indent = v.trivia.indent value.trivia.comment_ws = value.trivia.comment_ws or v.trivia.comment_ws value.trivia.comment = value.trivia.comment or v.trivia.comment value.trivia.trail = v.trivia.trail self._body[idx] = (new_key, value) if hasattr(value, "invalidate_display_name"): value.invalidate_display_name() # type: ignore[attr-defined] if isinstance(value, Table): # Insert a cosmetic new line for tables if: # - it does not have it yet OR is not followed by one # - it is not the last item, or # - The table being replaced has a newline last, _ = self._previous_item_with_index() idx = last if idx < 0 else idx has_ws = ends_with_whitespace(value) replace_has_ws = ( isinstance(v, Table) and v.value.body and isinstance(v.value.body[-1][1], Whitespace) ) next_ws = idx < last and isinstance(self._body[idx + 1][1], Whitespace) if (idx < last or replace_has_ws) and not (next_ws or has_ws): value.append(None, Whitespace("\n")) dict.__setitem__(self, new_key.key, value.value) def __str__(self) -> str: return str(self.value) def __repr__(self) -> str: return repr(self.value) def __eq__(self, other: dict) -> bool: if not isinstance(other, dict): return NotImplemented return self.value == other def _getstate(self, protocol): return (self._parsed,) def __reduce__(self): return self.__reduce_ex__(2) def __reduce_ex__(self, protocol): return ( self.__class__, self._getstate(protocol), (self._map, self._body, self._parsed, self._table_keys), ) def __setstate__(self, state): self._map = state[0] self._body = state[1] self._parsed = state[2] self._table_keys = state[3] for key, item in self._body: if key is not None: dict.__setitem__(self, key.key, item.value) def copy(self) -> Container: return copy.copy(self) def __copy__(self) -> Container: c = self.__class__(self._parsed) for k, v in dict.items(self): dict.__setitem__(c, k, v) c._body += self.body c._map.update(self._map) return c def _previous_item_with_index( self, idx: int | None = None, ignore=(Null,) ) -> tuple[int, Item] | None: """Find the immediate previous item before index ``idx``""" if idx is None or idx > len(self._body): idx = len(self._body) for i in range(idx - 1, -1, -1): v = self._body[i][-1] if not isinstance(v, ignore): return i, v return None def _previous_item(self, idx: int | None = None, ignore=(Null,)) -> Item | None: """Find the immediate previous item before index ``idx``. If ``idx`` is not given, the last item is returned. """ prev = self._previous_item_with_index(idx, ignore) return prev[-1] if prev else None class OutOfOrderTableProxy(_CustomDict): @staticmethod def validate(container: Container, indices: tuple[int, ...]) -> None: """Validate out of order tables in the given container""" # Append all items to a temp container to see if there is any error temp_container = Container(True) for i in indices: _, item = container._body[i] if isinstance(item, Table): for k, v in item.value.body: temp_container.append(k, v, validate=False) temp_container._validate_out_of_order_table() def __init__(self, container: Container, indices: tuple[int, ...]) -> None: self._container = container self._internal_container = Container(True) self._tables = [] self._tables_map = {} for i in indices: _, item = self._container._body[i] if isinstance(item, Table): self._tables.append(item) table_idx = len(self._tables) - 1 for k, v in item.value.body: self._internal_container._raw_append(k, v) self._tables_map.setdefault(k, []).append(table_idx) if k is not None: dict.__setitem__(self, k.key, v) self._internal_container._validate_out_of_order_table() def unwrap(self) -> str: return self._internal_container.unwrap() @property def value(self): return self._internal_container.value def __getitem__(self, key: Key | str) -> Any: if key not in self._internal_container: raise NonExistentKey(key) return self._internal_container[key] def __setitem__(self, key: Key | str, item: Any) -> None: if key in self._tables_map: # Overwrite the first table and remove others indices = self._tables_map[key] while len(indices) > 1: table = self._tables[indices.pop()] self._remove_table(table) self._tables[indices[0]][key] = item elif self._tables: table = self._tables[0] table[key] = item else: self._container[key] = item self._internal_container[key] = item if key is not None: dict.__setitem__(self, key, item) def _remove_table(self, table: Table) -> None: """Remove table from the parent container""" self._tables.remove(table) for idx, item in enumerate(self._container._body): if item[1] is table: self._container._remove_at(idx) break def __delitem__(self, key: Key | str) -> None: if key not in self._tables_map: raise NonExistentKey(key) for i in reversed(self._tables_map[key]): table = self._tables[i] del table[key] if not table and len(self._tables) > 1: self._remove_table(table) del self._tables_map[key] del self._internal_container[key] if key is not None: dict.__delitem__(self, key) def __iter__(self) -> Iterator[str]: return iter(dict.keys(self)) def __len__(self) -> int: return dict.__len__(self) def setdefault(self, key: Key | str, default: Any) -> Any: super().setdefault(key, default=default) return self[key] def ends_with_whitespace(it: Any) -> bool: """Returns ``True`` if the given item ``it`` is a ``Table`` or ``AoT`` object ending with a ``Whitespace``. """ return ( isinstance(it, Table) and isinstance(it.value._previous_item(), Whitespace) ) or (isinstance(it, AoT) and len(it) > 0 and isinstance(it[-1], Whitespace)) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1723623566.0961957 tomlkit-0.13.2/tomlkit/exceptions.py0000644000000000000000000001310714657064216014441 0ustar00from __future__ import annotations from typing import Collection class TOMLKitError(Exception): pass class ParseError(ValueError, TOMLKitError): """ This error occurs when the parser encounters a syntax error in the TOML being parsed. The error references the line and location within the line where the error was encountered. """ def __init__(self, line: int, col: int, message: str | None = None) -> None: self._line = line self._col = col if message is None: message = "TOML parse error" super().__init__(f"{message} at line {self._line} col {self._col}") @property def line(self): return self._line @property def col(self): return self._col class MixedArrayTypesError(ParseError): """ An array was found that had two or more element types. """ def __init__(self, line: int, col: int) -> None: message = "Mixed types found in array" super().__init__(line, col, message=message) class InvalidNumberError(ParseError): """ A numeric field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid number" super().__init__(line, col, message=message) class InvalidDateTimeError(ParseError): """ A datetime field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid datetime" super().__init__(line, col, message=message) class InvalidDateError(ParseError): """ A date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid date" super().__init__(line, col, message=message) class InvalidTimeError(ParseError): """ A date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid time" super().__init__(line, col, message=message) class InvalidNumberOrDateError(ParseError): """ A numeric or date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid number or date format" super().__init__(line, col, message=message) class InvalidUnicodeValueError(ParseError): """ A unicode code was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid unicode value" super().__init__(line, col, message=message) class UnexpectedCharError(ParseError): """ An unexpected character was found during parsing. """ def __init__(self, line: int, col: int, char: str) -> None: message = f"Unexpected character: {char!r}" super().__init__(line, col, message=message) class EmptyKeyError(ParseError): """ An empty key was found during parsing. """ def __init__(self, line: int, col: int) -> None: message = "Empty key" super().__init__(line, col, message=message) class EmptyTableNameError(ParseError): """ An empty table name was found during parsing. """ def __init__(self, line: int, col: int) -> None: message = "Empty table name" super().__init__(line, col, message=message) class InvalidCharInStringError(ParseError): """ The string being parsed contains an invalid character. """ def __init__(self, line: int, col: int, char: str) -> None: message = f"Invalid character {char!r} in string" super().__init__(line, col, message=message) class UnexpectedEofError(ParseError): """ The TOML being parsed ended before the end of a statement. """ def __init__(self, line: int, col: int) -> None: message = "Unexpected end of file" super().__init__(line, col, message=message) class InternalParserError(ParseError): """ An error that indicates a bug in the parser. """ def __init__(self, line: int, col: int, message: str | None = None) -> None: msg = "Internal parser error" if message: msg += f" ({message})" super().__init__(line, col, message=msg) class NonExistentKey(KeyError, TOMLKitError): """ A non-existent key was used. """ def __init__(self, key): message = f'Key "{key}" does not exist.' super().__init__(message) class KeyAlreadyPresent(TOMLKitError): """ An already present key was used. """ def __init__(self, key): key = getattr(key, "key", key) message = f'Key "{key}" already exists.' super().__init__(message) class InvalidControlChar(ParseError): def __init__(self, line: int, col: int, char: int, type: str) -> None: display_code = "\\u00" if char < 16: display_code += "0" display_code += hex(char)[2:] message = ( "Control characters (codes less than 0x1f and 0x7f)" f" are not allowed in {type}, " f"use {display_code} instead" ) super().__init__(line, col, message=message) class InvalidStringError(ValueError, TOMLKitError): def __init__(self, value: str, invalid_sequences: Collection[str], delimiter: str): repr_ = repr(value)[1:-1] super().__init__( f"Invalid string: {delimiter}{repr_}{delimiter}. " f"The character sequences {invalid_sequences} are invalid." ) class ConvertError(TypeError, ValueError, TOMLKitError): """Raised when item() fails to convert a value. It should be a TypeError, but due to historical reasons it needs to subclass ValueError as well. """ ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1723623566.100196 tomlkit-0.13.2/tomlkit/items.py0000644000000000000000000015044714657064216013412 0ustar00from __future__ import annotations import abc import copy import dataclasses import math import re import string import sys from datetime import date from datetime import datetime from datetime import time from datetime import tzinfo from enum import Enum from typing import TYPE_CHECKING from typing import Any from typing import Callable from typing import Collection from typing import Iterable from typing import Iterator from typing import Sequence from typing import TypeVar from typing import cast from typing import overload from tomlkit._compat import PY38 from tomlkit._compat import decode from tomlkit._types import _CustomDict from tomlkit._types import _CustomFloat from tomlkit._types import _CustomInt from tomlkit._types import _CustomList from tomlkit._types import wrap_method from tomlkit._utils import CONTROL_CHARS from tomlkit._utils import escape_string from tomlkit.exceptions import ConvertError from tomlkit.exceptions import InvalidStringError if TYPE_CHECKING: from tomlkit import container ItemT = TypeVar("ItemT", bound="Item") Encoder = Callable[[Any], "Item"] CUSTOM_ENCODERS: list[Encoder] = [] AT = TypeVar("AT", bound="AbstractTable") @overload def item(value: bool, _parent: Item | None = ..., _sort_keys: bool = ...) -> Bool: ... @overload def item(value: int, _parent: Item | None = ..., _sort_keys: bool = ...) -> Integer: ... @overload def item(value: float, _parent: Item | None = ..., _sort_keys: bool = ...) -> Float: ... @overload def item(value: str, _parent: Item | None = ..., _sort_keys: bool = ...) -> String: ... @overload def item( value: datetime, _parent: Item | None = ..., _sort_keys: bool = ... ) -> DateTime: ... @overload def item(value: date, _parent: Item | None = ..., _sort_keys: bool = ...) -> Date: ... @overload def item(value: time, _parent: Item | None = ..., _sort_keys: bool = ...) -> Time: ... @overload def item( value: Sequence[dict], _parent: Item | None = ..., _sort_keys: bool = ... ) -> AoT: ... @overload def item( value: Sequence, _parent: Item | None = ..., _sort_keys: bool = ... ) -> Array: ... @overload def item(value: dict, _parent: Array = ..., _sort_keys: bool = ...) -> InlineTable: ... @overload def item(value: dict, _parent: Item | None = ..., _sort_keys: bool = ...) -> Table: ... @overload def item(value: ItemT, _parent: Item | None = ..., _sort_keys: bool = ...) -> ItemT: ... def item(value: Any, _parent: Item | None = None, _sort_keys: bool = False) -> Item: """Create a TOML item from a Python object. :Example: >>> item(42) 42 >>> item([1, 2, 3]) [1, 2, 3] >>> item({'a': 1, 'b': 2}) a = 1 b = 2 """ from tomlkit.container import Container if isinstance(value, Item): return value if isinstance(value, bool): return Bool(value, Trivia()) elif isinstance(value, int): return Integer(value, Trivia(), str(value)) elif isinstance(value, float): return Float(value, Trivia(), str(value)) elif isinstance(value, dict): table_constructor = ( InlineTable if isinstance(_parent, (Array, InlineTable)) else Table ) val = table_constructor(Container(), Trivia(), False) for k, v in sorted( value.items(), key=lambda i: (isinstance(i[1], dict), i[0]) if _sort_keys else 1, ): val[k] = item(v, _parent=val, _sort_keys=_sort_keys) return val elif isinstance(value, (list, tuple)): if ( value and all(isinstance(v, dict) for v in value) and (_parent is None or isinstance(_parent, Table)) ): a = AoT([]) table_constructor = Table else: a = Array([], Trivia()) table_constructor = InlineTable for v in value: if isinstance(v, dict): table = table_constructor(Container(), Trivia(), True) for k, _v in sorted( v.items(), key=lambda i: (isinstance(i[1], dict), i[0] if _sort_keys else 1), ): i = item(_v, _parent=table, _sort_keys=_sort_keys) if isinstance(table, InlineTable): i.trivia.trail = "" table[k] = i v = table a.append(v) return a elif isinstance(value, str): return String.from_raw(value) elif isinstance(value, datetime): return DateTime( value.year, value.month, value.day, value.hour, value.minute, value.second, value.microsecond, value.tzinfo, Trivia(), value.isoformat().replace("+00:00", "Z"), ) elif isinstance(value, date): return Date(value.year, value.month, value.day, Trivia(), value.isoformat()) elif isinstance(value, time): return Time( value.hour, value.minute, value.second, value.microsecond, value.tzinfo, Trivia(), value.isoformat(), ) else: for encoder in CUSTOM_ENCODERS: try: rv = encoder(value) except ConvertError: pass else: if not isinstance(rv, Item): raise ConvertError( f"Custom encoder is expected to return an instance of Item, got {type(rv)}" ) return rv raise ConvertError(f"Unable to convert an object of {type(value)} to a TOML item") class StringType(Enum): # Single Line Basic SLB = '"' # Multi Line Basic MLB = '"""' # Single Line Literal SLL = "'" # Multi Line Literal MLL = "'''" @classmethod def select(cls, literal=False, multiline=False) -> StringType: return { (False, False): cls.SLB, (False, True): cls.MLB, (True, False): cls.SLL, (True, True): cls.MLL, }[(literal, multiline)] @property def escaped_sequences(self) -> Collection[str]: # https://toml.io/en/v1.0.0#string escaped_in_basic = CONTROL_CHARS | {"\\"} allowed_in_multiline = {"\n", "\r"} return { StringType.SLB: escaped_in_basic | {'"'}, StringType.MLB: (escaped_in_basic | {'"""'}) - allowed_in_multiline, StringType.SLL: (), StringType.MLL: (), }[self] @property def invalid_sequences(self) -> Collection[str]: # https://toml.io/en/v1.0.0#string forbidden_in_literal = CONTROL_CHARS - {"\t"} allowed_in_multiline = {"\n", "\r"} return { StringType.SLB: (), StringType.MLB: (), StringType.SLL: forbidden_in_literal | {"'"}, StringType.MLL: (forbidden_in_literal | {"'''"}) - allowed_in_multiline, }[self] @property def unit(self) -> str: return self.value[0] def is_basic(self) -> bool: return self in {StringType.SLB, StringType.MLB} def is_literal(self) -> bool: return self in {StringType.SLL, StringType.MLL} def is_singleline(self) -> bool: return self in {StringType.SLB, StringType.SLL} def is_multiline(self) -> bool: return self in {StringType.MLB, StringType.MLL} def toggle(self) -> StringType: return { StringType.SLB: StringType.MLB, StringType.MLB: StringType.SLB, StringType.SLL: StringType.MLL, StringType.MLL: StringType.SLL, }[self] class BoolType(Enum): TRUE = "true" FALSE = "false" def __bool__(self): return {BoolType.TRUE: True, BoolType.FALSE: False}[self] def __iter__(self): return iter(self.value) def __len__(self): return len(self.value) @dataclasses.dataclass class Trivia: """ Trivia information (aka metadata). """ # Whitespace before a value. indent: str = "" # Whitespace after a value, but before a comment. comment_ws: str = "" # Comment, starting with # character, or empty string if no comment. comment: str = "" # Trailing newline. trail: str = "\n" def copy(self) -> Trivia: return dataclasses.replace(self) class KeyType(Enum): """ The type of a Key. Keys can be bare (unquoted), or quoted using basic ("), or literal (') quotes following the same escaping rules as single-line StringType. """ Bare = "" Basic = '"' Literal = "'" class Key(abc.ABC): """Base class for a key""" sep: str _original: str _keys: list[SingleKey] _dotted: bool key: str @abc.abstractmethod def __hash__(self) -> int: pass @abc.abstractmethod def __eq__(self, __o: object) -> bool: pass def is_dotted(self) -> bool: """If the key is followed by other keys""" return self._dotted def __iter__(self) -> Iterator[SingleKey]: return iter(self._keys) def concat(self, other: Key) -> DottedKey: """Concatenate keys into a dotted key""" keys = self._keys + other._keys return DottedKey(keys, sep=self.sep) def is_multi(self) -> bool: """Check if the key contains multiple keys""" return len(self._keys) > 1 def as_string(self) -> str: """The TOML representation""" return self._original def __str__(self) -> str: return self.as_string() def __repr__(self) -> str: return f"" class SingleKey(Key): """A single key""" def __init__( self, k: str, t: KeyType | None = None, sep: str | None = None, original: str | None = None, ) -> None: if t is None: if not k or any( c not in string.ascii_letters + string.digits + "-" + "_" for c in k ): t = KeyType.Basic else: t = KeyType.Bare self.t = t if sep is None: sep = " = " self.sep = sep self.key = k if original is None: key_str = escape_string(k) if t == KeyType.Basic else k original = f"{t.value}{key_str}{t.value}" self._original = original self._keys = [self] self._dotted = False @property def delimiter(self) -> str: """The delimiter: double quote/single quote/none""" return self.t.value def is_bare(self) -> bool: """Check if the key is bare""" return self.t == KeyType.Bare def __hash__(self) -> int: return hash(self.key) def __eq__(self, other: Any) -> bool: if isinstance(other, Key): return isinstance(other, SingleKey) and self.key == other.key return self.key == other class DottedKey(Key): def __init__( self, keys: Iterable[SingleKey], sep: str | None = None, original: str | None = None, ) -> None: self._keys = list(keys) if original is None: original = ".".join(k.as_string() for k in self._keys) self.sep = " = " if sep is None else sep self._original = original self._dotted = False self.key = ".".join(k.key for k in self._keys) def __hash__(self) -> int: return hash(tuple(self._keys)) def __eq__(self, __o: object) -> bool: return isinstance(__o, DottedKey) and self._keys == __o._keys class Item: """ An item within a TOML document. """ def __init__(self, trivia: Trivia) -> None: self._trivia = trivia @property def trivia(self) -> Trivia: """The trivia element associated with this item""" return self._trivia @property def discriminant(self) -> int: raise NotImplementedError() def as_string(self) -> str: """The TOML representation""" raise NotImplementedError() @property def value(self) -> Any: return self def unwrap(self) -> Any: """Returns as pure python object (ppo)""" raise NotImplementedError() # Helpers def comment(self, comment: str) -> Item: """Attach a comment to this item""" if not comment.strip().startswith("#"): comment = "# " + comment self._trivia.comment_ws = " " self._trivia.comment = comment return self def indent(self, indent: int) -> Item: """Indent this item with given number of spaces""" if self._trivia.indent.startswith("\n"): self._trivia.indent = "\n" + " " * indent else: self._trivia.indent = " " * indent return self def is_boolean(self) -> bool: return isinstance(self, Bool) def is_table(self) -> bool: return isinstance(self, Table) def is_inline_table(self) -> bool: return isinstance(self, InlineTable) def is_aot(self) -> bool: return isinstance(self, AoT) def _getstate(self, protocol=3): return (self._trivia,) def __reduce__(self): return self.__reduce_ex__(2) def __reduce_ex__(self, protocol): return self.__class__, self._getstate(protocol) class Whitespace(Item): """ A whitespace literal. """ def __init__(self, s: str, fixed: bool = False) -> None: self._s = s self._fixed = fixed @property def s(self) -> str: return self._s @property def value(self) -> str: """The wrapped string of the whitespace""" return self._s @property def trivia(self) -> Trivia: raise RuntimeError("Called trivia on a Whitespace variant.") @property def discriminant(self) -> int: return 0 def is_fixed(self) -> bool: """If the whitespace is fixed, it can't be merged or discarded from the output.""" return self._fixed def as_string(self) -> str: return self._s def __repr__(self) -> str: return f"<{self.__class__.__name__} {self._s!r}>" def _getstate(self, protocol=3): return self._s, self._fixed class Comment(Item): """ A comment literal. """ @property def discriminant(self) -> int: return 1 def as_string(self) -> str: return ( f"{self._trivia.indent}{decode(self._trivia.comment)}{self._trivia.trail}" ) def __str__(self) -> str: return f"{self._trivia.indent}{decode(self._trivia.comment)}" class Integer(Item, _CustomInt): """ An integer literal. """ def __new__(cls, value: int, trivia: Trivia, raw: str) -> Integer: return int.__new__(cls, value) def __init__(self, value: int, trivia: Trivia, raw: str) -> None: super().__init__(trivia) self._original = value self._raw = raw self._sign = False if re.match(r"^[+\-]\d+$", raw): self._sign = True def unwrap(self) -> int: return self._original __int__ = unwrap def __hash__(self) -> int: return hash(self.unwrap()) @property def discriminant(self) -> int: return 2 @property def value(self) -> int: """The wrapped integer value""" return self def as_string(self) -> str: return self._raw def _new(self, result): raw = str(result) if self._sign and result >= 0: raw = f"+{raw}" return Integer(result, self._trivia, raw) def _getstate(self, protocol=3): return int(self), self._trivia, self._raw # int methods __abs__ = wrap_method(int.__abs__) __add__ = wrap_method(int.__add__) __and__ = wrap_method(int.__and__) __ceil__ = wrap_method(int.__ceil__) __eq__ = int.__eq__ __floor__ = wrap_method(int.__floor__) __floordiv__ = wrap_method(int.__floordiv__) __invert__ = wrap_method(int.__invert__) __le__ = int.__le__ __lshift__ = wrap_method(int.__lshift__) __lt__ = int.__lt__ __mod__ = wrap_method(int.__mod__) __mul__ = wrap_method(int.__mul__) __neg__ = wrap_method(int.__neg__) __or__ = wrap_method(int.__or__) __pos__ = wrap_method(int.__pos__) __pow__ = wrap_method(int.__pow__) __radd__ = wrap_method(int.__radd__) __rand__ = wrap_method(int.__rand__) __rfloordiv__ = wrap_method(int.__rfloordiv__) __rlshift__ = wrap_method(int.__rlshift__) __rmod__ = wrap_method(int.__rmod__) __rmul__ = wrap_method(int.__rmul__) __ror__ = wrap_method(int.__ror__) __round__ = wrap_method(int.__round__) __rpow__ = wrap_method(int.__rpow__) __rrshift__ = wrap_method(int.__rrshift__) __rshift__ = wrap_method(int.__rshift__) __rxor__ = wrap_method(int.__rxor__) __trunc__ = wrap_method(int.__trunc__) __xor__ = wrap_method(int.__xor__) def __rtruediv__(self, other): result = int.__rtruediv__(self, other) if result is NotImplemented: return result return Float._new(self, result) def __truediv__(self, other): result = int.__truediv__(self, other) if result is NotImplemented: return result return Float._new(self, result) class Float(Item, _CustomFloat): """ A float literal. """ def __new__(cls, value: float, trivia: Trivia, raw: str) -> Float: return float.__new__(cls, value) def __init__(self, value: float, trivia: Trivia, raw: str) -> None: super().__init__(trivia) self._original = value self._raw = raw self._sign = False if re.match(r"^[+\-].+$", raw): self._sign = True def unwrap(self) -> float: return self._original __float__ = unwrap def __hash__(self) -> int: return hash(self.unwrap()) @property def discriminant(self) -> int: return 3 @property def value(self) -> float: """The wrapped float value""" return self def as_string(self) -> str: return self._raw def _new(self, result): raw = str(result) if self._sign and result >= 0: raw = f"+{raw}" return Float(result, self._trivia, raw) def _getstate(self, protocol=3): return float(self), self._trivia, self._raw # float methods __abs__ = wrap_method(float.__abs__) __add__ = wrap_method(float.__add__) __eq__ = float.__eq__ __floordiv__ = wrap_method(float.__floordiv__) __le__ = float.__le__ __lt__ = float.__lt__ __mod__ = wrap_method(float.__mod__) __mul__ = wrap_method(float.__mul__) __neg__ = wrap_method(float.__neg__) __pos__ = wrap_method(float.__pos__) __pow__ = wrap_method(float.__pow__) __radd__ = wrap_method(float.__radd__) __rfloordiv__ = wrap_method(float.__rfloordiv__) __rmod__ = wrap_method(float.__rmod__) __rmul__ = wrap_method(float.__rmul__) __round__ = wrap_method(float.__round__) __rpow__ = wrap_method(float.__rpow__) __rtruediv__ = wrap_method(float.__rtruediv__) __truediv__ = wrap_method(float.__truediv__) __trunc__ = float.__trunc__ if sys.version_info >= (3, 9): __ceil__ = float.__ceil__ __floor__ = float.__floor__ else: __ceil__ = math.ceil __floor__ = math.floor class Bool(Item): """ A boolean literal. """ def __init__(self, t: int, trivia: Trivia) -> None: super().__init__(trivia) self._value = bool(t) def unwrap(self) -> bool: return bool(self) @property def discriminant(self) -> int: return 4 @property def value(self) -> bool: """The wrapped boolean value""" return self._value def as_string(self) -> str: return str(self._value).lower() def _getstate(self, protocol=3): return self._value, self._trivia def __bool__(self): return self._value __nonzero__ = __bool__ def __eq__(self, other): if not isinstance(other, bool): return NotImplemented return other == self._value def __hash__(self): return hash(self._value) def __repr__(self): return repr(self._value) class DateTime(Item, datetime): """ A datetime literal. """ def __new__( cls, year: int, month: int, day: int, hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None, *_: Any, **kwargs: Any, ) -> datetime: return datetime.__new__( cls, year, month, day, hour, minute, second, microsecond, tzinfo=tzinfo, **kwargs, ) def __init__( self, year: int, month: int, day: int, hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None, trivia: Trivia | None = None, raw: str | None = None, **kwargs: Any, ) -> None: super().__init__(trivia or Trivia()) self._raw = raw or self.isoformat() def unwrap(self) -> datetime: ( year, month, day, hour, minute, second, microsecond, tzinfo, _, _, ) = self._getstate() return datetime(year, month, day, hour, minute, second, microsecond, tzinfo) @property def discriminant(self) -> int: return 5 @property def value(self) -> datetime: return self def as_string(self) -> str: return self._raw def __add__(self, other): if PY38: result = datetime( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, ).__add__(other) else: result = super().__add__(other) return self._new(result) def __sub__(self, other): if PY38: result = datetime( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, ).__sub__(other) else: result = super().__sub__(other) if isinstance(result, datetime): result = self._new(result) return result def replace(self, *args: Any, **kwargs: Any) -> datetime: return self._new(super().replace(*args, **kwargs)) def astimezone(self, tz: tzinfo) -> datetime: result = super().astimezone(tz) if PY38: return result return self._new(result) def _new(self, result) -> DateTime: raw = result.isoformat() return DateTime( result.year, result.month, result.day, result.hour, result.minute, result.second, result.microsecond, result.tzinfo, self._trivia, raw, ) def _getstate(self, protocol=3): return ( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, self._trivia, self._raw, ) class Date(Item, date): """ A date literal. """ def __new__(cls, year: int, month: int, day: int, *_: Any) -> date: return date.__new__(cls, year, month, day) def __init__( self, year: int, month: int, day: int, trivia: Trivia | None = None, raw: str = "", ) -> None: super().__init__(trivia or Trivia()) self._raw = raw def unwrap(self) -> date: (year, month, day, _, _) = self._getstate() return date(year, month, day) @property def discriminant(self) -> int: return 6 @property def value(self) -> date: return self def as_string(self) -> str: return self._raw def __add__(self, other): if PY38: result = date(self.year, self.month, self.day).__add__(other) else: result = super().__add__(other) return self._new(result) def __sub__(self, other): if PY38: result = date(self.year, self.month, self.day).__sub__(other) else: result = super().__sub__(other) if isinstance(result, date): result = self._new(result) return result def replace(self, *args: Any, **kwargs: Any) -> date: return self._new(super().replace(*args, **kwargs)) def _new(self, result): raw = result.isoformat() return Date(result.year, result.month, result.day, self._trivia, raw) def _getstate(self, protocol=3): return (self.year, self.month, self.day, self._trivia, self._raw) class Time(Item, time): """ A time literal. """ def __new__( cls, hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None, *_: Any, ) -> time: return time.__new__(cls, hour, minute, second, microsecond, tzinfo) def __init__( self, hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None, trivia: Trivia | None = None, raw: str = "", ) -> None: super().__init__(trivia or Trivia()) self._raw = raw def unwrap(self) -> time: (hour, minute, second, microsecond, tzinfo, _, _) = self._getstate() return time(hour, minute, second, microsecond, tzinfo) @property def discriminant(self) -> int: return 7 @property def value(self) -> time: return self def as_string(self) -> str: return self._raw def replace(self, *args: Any, **kwargs: Any) -> time: return self._new(super().replace(*args, **kwargs)) def _new(self, result): raw = result.isoformat() return Time( result.hour, result.minute, result.second, result.microsecond, result.tzinfo, self._trivia, raw, ) def _getstate(self, protocol: int = 3) -> tuple: return ( self.hour, self.minute, self.second, self.microsecond, self.tzinfo, self._trivia, self._raw, ) class _ArrayItemGroup: __slots__ = ("value", "indent", "comma", "comment") def __init__( self, value: Item | None = None, indent: Whitespace | None = None, comma: Whitespace | None = None, comment: Comment | None = None, ) -> None: self.value = value self.indent = indent self.comma = comma self.comment = comment def __iter__(self) -> Iterator[Item]: return filter( lambda x: x is not None, (self.indent, self.value, self.comma, self.comment) ) def __repr__(self) -> str: return repr(tuple(self)) def is_whitespace(self) -> bool: return self.value is None and self.comment is None def __bool__(self) -> bool: try: next(iter(self)) except StopIteration: return False return True class Array(Item, _CustomList): """ An array literal """ def __init__( self, value: list[Item], trivia: Trivia, multiline: bool = False ) -> None: super().__init__(trivia) list.__init__( self, [v for v in value if not isinstance(v, (Whitespace, Comment, Null))], ) self._index_map: dict[int, int] = {} self._value = self._group_values(value) self._multiline = multiline self._reindex() def _group_values(self, value: list[Item]) -> list[_ArrayItemGroup]: """Group the values into (indent, value, comma, comment) tuples""" groups = [] this_group = _ArrayItemGroup() for item in value: if isinstance(item, Whitespace): if "," not in item.s: groups.append(this_group) this_group = _ArrayItemGroup(indent=item) else: if this_group.value is None: # when comma is met and no value is provided, add a dummy Null this_group.value = Null() this_group.comma = item elif isinstance(item, Comment): if this_group.value is None: this_group.value = Null() this_group.comment = item elif this_group.value is None: this_group.value = item else: groups.append(this_group) this_group = _ArrayItemGroup(value=item) groups.append(this_group) return [group for group in groups if group] def unwrap(self) -> list[Any]: unwrapped = [] for v in self: if hasattr(v, "unwrap"): unwrapped.append(v.unwrap()) else: unwrapped.append(v) return unwrapped @property def discriminant(self) -> int: return 8 @property def value(self) -> list: return self def _iter_items(self) -> Iterator[Item]: for v in self._value: yield from v def multiline(self, multiline: bool) -> Array: """Change the array to display in multiline or not. :Example: >>> a = item([1, 2, 3]) >>> print(a.as_string()) [1, 2, 3] >>> print(a.multiline(True).as_string()) [ 1, 2, 3, ] """ self._multiline = multiline return self def as_string(self) -> str: if not self._multiline or not self._value: return f'[{"".join(v.as_string() for v in self._iter_items())}]' s = "[\n" s += "".join( self.trivia.indent + " " * 4 + v.value.as_string() + ("," if not isinstance(v.value, Null) else "") + (v.comment.as_string() if v.comment is not None else "") + "\n" for v in self._value if v.value is not None ) s += self.trivia.indent + "]" return s def _reindex(self) -> None: self._index_map.clear() index = 0 for i, v in enumerate(self._value): if v.value is None or isinstance(v.value, Null): continue self._index_map[index] = i index += 1 def add_line( self, *items: Any, indent: str = " ", comment: str | None = None, add_comma: bool = True, newline: bool = True, ) -> None: """Add multiple items in a line to control the format precisely. When add_comma is True, only accept actual values and ", " will be added between values automatically. :Example: >>> a = array() >>> a.add_line(1, 2, 3) >>> a.add_line(4, 5, 6) >>> a.add_line(indent="") >>> print(a.as_string()) [ 1, 2, 3, 4, 5, 6, ] """ new_values: list[Item] = [] first_indent = f"\n{indent}" if newline else indent if first_indent: new_values.append(Whitespace(first_indent)) whitespace = "" data_values = [] for i, el in enumerate(items): it = item(el, _parent=self) if isinstance(it, Comment) or add_comma and isinstance(el, Whitespace): raise ValueError(f"item type {type(it)} is not allowed in add_line") if not isinstance(it, Whitespace): if whitespace: new_values.append(Whitespace(whitespace)) whitespace = "" new_values.append(it) data_values.append(it.value) if add_comma: new_values.append(Whitespace(",")) if i != len(items) - 1: new_values.append(Whitespace(" ")) elif "," not in it.s: whitespace += it.s else: new_values.append(it) if whitespace: new_values.append(Whitespace(whitespace)) if comment: indent = " " if items else "" new_values.append( Comment(Trivia(indent=indent, comment=f"# {comment}", trail="")) ) list.extend(self, data_values) if len(self._value) > 0: last_item = self._value[-1] last_value_item = next( ( v for v in self._value[::-1] if v.value is not None and not isinstance(v.value, Null) ), None, ) if last_value_item is not None: last_value_item.comma = Whitespace(",") if last_item.is_whitespace(): self._value[-1:-1] = self._group_values(new_values) else: self._value.extend(self._group_values(new_values)) else: self._value.extend(self._group_values(new_values)) self._reindex() def clear(self) -> None: """Clear the array.""" list.clear(self) self._index_map.clear() self._value.clear() def __len__(self) -> int: return list.__len__(self) def __getitem__(self, key: int | slice) -> Any: rv = cast(Item, list.__getitem__(self, key)) if rv.is_boolean(): return bool(rv) return rv def __setitem__(self, key: int | slice, value: Any) -> Any: it = item(value, _parent=self) list.__setitem__(self, key, it) if isinstance(key, slice): raise ValueError("slice assignment is not supported") if key < 0: key += len(self) self._value[self._index_map[key]].value = it def insert(self, pos: int, value: Any) -> None: it = item(value, _parent=self) length = len(self) if not isinstance(it, (Comment, Whitespace)): list.insert(self, pos, it) if pos < 0: pos += length if pos < 0: pos = 0 idx = 0 # insert position of the self._value list default_indent = " " if pos < length: try: idx = self._index_map[pos] except KeyError as e: raise IndexError("list index out of range") from e else: idx = len(self._value) if idx >= 1 and self._value[idx - 1].is_whitespace(): # The last item is a pure whitespace(\n ), insert before it idx -= 1 if ( self._value[idx].indent is not None and "\n" in self._value[idx].indent.s ): default_indent = "\n " indent: Item | None = None comma: Item | None = Whitespace(",") if pos < length else None if idx < len(self._value) and not self._value[idx].is_whitespace(): # Prefer to copy the indentation from the item after indent = self._value[idx].indent if idx > 0: last_item = self._value[idx - 1] if indent is None: indent = last_item.indent if not isinstance(last_item.value, Null) and "\n" in default_indent: # Copy the comma from the last item if 1) it contains a value and # 2) the array is multiline comma = last_item.comma if last_item.comma is None and not isinstance(last_item.value, Null): # Add comma to the last item to separate it from the following items. last_item.comma = Whitespace(",") if indent is None and (idx > 0 or "\n" in default_indent): # apply default indent if it isn't the first item or the array is multiline. indent = Whitespace(default_indent) new_item = _ArrayItemGroup(value=it, indent=indent, comma=comma) self._value.insert(idx, new_item) self._reindex() def __delitem__(self, key: int | slice): length = len(self) list.__delitem__(self, key) if isinstance(key, slice): indices_to_remove = list( range(key.start or 0, key.stop or length, key.step or 1) ) else: indices_to_remove = [length + key if key < 0 else key] for i in sorted(indices_to_remove, reverse=True): try: idx = self._index_map[i] except KeyError as e: if not isinstance(key, slice): raise IndexError("list index out of range") from e else: del self._value[idx] if ( idx == 0 and len(self._value) > 0 and self._value[idx].indent and "\n" not in self._value[idx].indent.s ): # Remove the indentation of the first item if not newline self._value[idx].indent = None if len(self._value) > 0: v = self._value[-1] if not v.is_whitespace(): # remove the comma of the last item v.comma = None self._reindex() def _getstate(self, protocol=3): return list(self._iter_items()), self._trivia, self._multiline class AbstractTable(Item, _CustomDict): """Common behaviour of both :class:`Table` and :class:`InlineTable`""" def __init__(self, value: container.Container, trivia: Trivia): Item.__init__(self, trivia) self._value = value for k, v in self._value.body: if k is not None: dict.__setitem__(self, k.key, v) def unwrap(self) -> dict[str, Any]: unwrapped = {} for k, v in self.items(): if isinstance(k, Key): k = k.key if hasattr(v, "unwrap"): v = v.unwrap() unwrapped[k] = v return unwrapped @property def value(self) -> container.Container: return self._value @overload def append(self: AT, key: None, value: Comment | Whitespace) -> AT: ... @overload def append(self: AT, key: Key | str, value: Any) -> AT: ... def append(self, key, value): raise NotImplementedError @overload def add(self: AT, key: Comment | Whitespace) -> AT: ... @overload def add(self: AT, key: Key | str, value: Any = ...) -> AT: ... def add(self, key, value=None): if value is None: if not isinstance(key, (Comment, Whitespace)): msg = "Non comment/whitespace items must have an associated key" raise ValueError(msg) key, value = None, key return self.append(key, value) def remove(self: AT, key: Key | str) -> AT: self._value.remove(key) if isinstance(key, Key): key = key.key if key is not None: dict.__delitem__(self, key) return self def setdefault(self, key: Key | str, default: Any) -> Any: super().setdefault(key, default) return self[key] def __str__(self): return str(self.value) def copy(self: AT) -> AT: return copy.copy(self) def __repr__(self) -> str: return repr(self.value) def __iter__(self) -> Iterator[str]: return iter(self._value) def __len__(self) -> int: return len(self._value) def __delitem__(self, key: Key | str) -> None: self.remove(key) def __getitem__(self, key: Key | str) -> Item: return cast(Item, self._value[key]) def __setitem__(self, key: Key | str, value: Any) -> None: if not isinstance(value, Item): value = item(value, _parent=self) is_replace = key in self self._value[key] = value if key is not None: dict.__setitem__(self, key, value) if is_replace: return m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: return indent = m.group(1) if not isinstance(value, Whitespace): m = re.match("(?s)^([^ ]*)(.*)$", value.trivia.indent) if not m: value.trivia.indent = indent else: value.trivia.indent = m.group(1) + indent + m.group(2) class Table(AbstractTable): """ A table literal. """ def __init__( self, value: container.Container, trivia: Trivia, is_aot_element: bool, is_super_table: bool | None = None, name: str | None = None, display_name: str | None = None, ) -> None: super().__init__(value, trivia) self.name = name self.display_name = display_name self._is_aot_element = is_aot_element self._is_super_table = is_super_table @property def discriminant(self) -> int: return 9 def __copy__(self) -> Table: return type(self)( self._value.copy(), self._trivia.copy(), self._is_aot_element, self._is_super_table, self.name, self.display_name, ) def append(self, key: Key | str | None, _item: Any) -> Table: """ Appends a (key, item) to the table. """ if not isinstance(_item, Item): _item = item(_item, _parent=self) self._value.append(key, _item) if isinstance(key, Key): key = next(iter(key)).key _item = self._value[key] if key is not None: dict.__setitem__(self, key, _item) m = re.match(r"(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: return self indent = m.group(1) if not isinstance(_item, Whitespace): m = re.match("(?s)^([^ ]*)(.*)$", _item.trivia.indent) if not m: _item.trivia.indent = indent else: _item.trivia.indent = m.group(1) + indent + m.group(2) return self def raw_append(self, key: Key | str | None, _item: Any) -> Table: """Similar to :meth:`append` but does not copy indentation.""" if not isinstance(_item, Item): _item = item(_item) self._value.append(key, _item, validate=False) if isinstance(key, Key): key = next(iter(key)).key _item = self._value[key] if key is not None: dict.__setitem__(self, key, _item) return self def is_aot_element(self) -> bool: """True if the table is the direct child of an AOT element.""" return self._is_aot_element def is_super_table(self) -> bool: """A super table is the intermediate parent of a nested table as in [a.b.c]. If true, it won't appear in the TOML representation.""" if self._is_super_table is not None: return self._is_super_table if not self: return False # If the table has children and all children are tables, then it is a super table. for k, child in self.items(): if not isinstance(k, Key): k = SingleKey(k) index = self.value._map[k] if isinstance(index, tuple): return False real_key = self.value.body[index][0] if ( not isinstance(child, (Table, AoT)) or real_key is None or real_key.is_dotted() ): return False return True def as_string(self) -> str: return self._value.as_string() # Helpers def indent(self, indent: int) -> Table: """Indent the table with given number of spaces.""" super().indent(indent) m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: indent_str = "" else: indent_str = m.group(1) for _, item in self._value.body: if not isinstance(item, Whitespace): item.trivia.indent = indent_str + item.trivia.indent return self def invalidate_display_name(self): """Call ``invalidate_display_name`` on the contained tables""" self.display_name = None for child in self.values(): if hasattr(child, "invalidate_display_name"): child.invalidate_display_name() def _getstate(self, protocol: int = 3) -> tuple: return ( self._value, self._trivia, self._is_aot_element, self._is_super_table, self.name, self.display_name, ) class InlineTable(AbstractTable): """ An inline table literal. """ def __init__( self, value: container.Container, trivia: Trivia, new: bool = False ) -> None: super().__init__(value, trivia) self._new = new @property def discriminant(self) -> int: return 10 def append(self, key: Key | str | None, _item: Any) -> InlineTable: """ Appends a (key, item) to the table. """ if not isinstance(_item, Item): _item = item(_item, _parent=self) if not isinstance(_item, (Whitespace, Comment)): if not _item.trivia.indent and len(self._value) > 0 and not self._new: _item.trivia.indent = " " if _item.trivia.comment: _item.trivia.comment = "" self._value.append(key, _item) if isinstance(key, Key): key = key.key if key is not None: dict.__setitem__(self, key, _item) return self def as_string(self) -> str: buf = "{" last_item_idx = next( ( i for i in range(len(self._value.body) - 1, -1, -1) if self._value.body[i][0] is not None ), None, ) for i, (k, v) in enumerate(self._value.body): if k is None: if i == len(self._value.body) - 1: if self._new: buf = buf.rstrip(", ") else: buf = buf.rstrip(",") buf += v.as_string() continue v_trivia_trail = v.trivia.trail.replace("\n", "") buf += ( f"{v.trivia.indent}" f'{k.as_string() + ("." if k.is_dotted() else "")}' f"{k.sep}" f"{v.as_string()}" f"{v.trivia.comment}" f"{v_trivia_trail}" ) if last_item_idx is not None and i < last_item_idx: buf += "," if self._new: buf += " " buf += "}" return buf def __setitem__(self, key: Key | str, value: Any) -> None: if hasattr(value, "trivia") and value.trivia.comment: value.trivia.comment = "" super().__setitem__(key, value) def __copy__(self) -> InlineTable: return type(self)(self._value.copy(), self._trivia.copy(), self._new) def _getstate(self, protocol: int = 3) -> tuple: return (self._value, self._trivia) class String(str, Item): """ A string literal. """ def __new__(cls, t, value, original, trivia): return super().__new__(cls, value) def __init__(self, t: StringType, _: str, original: str, trivia: Trivia) -> None: super().__init__(trivia) self._t = t self._original = original def unwrap(self) -> str: return str(self) @property def discriminant(self) -> int: return 11 @property def value(self) -> str: return self def as_string(self) -> str: return f"{self._t.value}{decode(self._original)}{self._t.value}" def __add__(self: ItemT, other: str) -> ItemT: if not isinstance(other, str): return NotImplemented result = super().__add__(other) original = self._original + getattr(other, "_original", other) return self._new(result, original) def _new(self, result: str, original: str) -> String: return String(self._t, result, original, self._trivia) def _getstate(self, protocol=3): return self._t, str(self), self._original, self._trivia @classmethod def from_raw(cls, value: str, type_=StringType.SLB, escape=True) -> String: value = decode(value) invalid = type_.invalid_sequences if any(c in value for c in invalid): raise InvalidStringError(value, invalid, type_.value) escaped = type_.escaped_sequences string_value = escape_string(value, escaped) if escape and escaped else value return cls(type_, decode(value), string_value, Trivia()) class AoT(Item, _CustomList): """ An array of table literal """ def __init__( self, body: list[Table], name: str | None = None, parsed: bool = False ) -> None: self.name = name self._body: list[Table] = [] self._parsed = parsed super().__init__(Trivia(trail="")) for table in body: self.append(table) def unwrap(self) -> list[dict[str, Any]]: unwrapped = [] for t in self._body: if hasattr(t, "unwrap"): unwrapped.append(t.unwrap()) else: unwrapped.append(t) return unwrapped @property def body(self) -> list[Table]: return self._body @property def discriminant(self) -> int: return 12 @property def value(self) -> list[dict[Any, Any]]: return [v.value for v in self._body] def __len__(self) -> int: return len(self._body) @overload def __getitem__(self, key: slice) -> list[Table]: ... @overload def __getitem__(self, key: int) -> Table: ... def __getitem__(self, key): return self._body[key] def __setitem__(self, key: slice | int, value: Any) -> None: raise NotImplementedError def __delitem__(self, key: slice | int) -> None: del self._body[key] list.__delitem__(self, key) def insert(self, index: int, value: dict) -> None: value = item(value, _parent=self) if not isinstance(value, Table): raise ValueError(f"Unsupported insert value type: {type(value)}") length = len(self) if index < 0: index += length if index < 0: index = 0 elif index >= length: index = length m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if m: indent = m.group(1) m = re.match("(?s)^([^ ]*)(.*)$", value.trivia.indent) if not m: value.trivia.indent = indent else: value.trivia.indent = m.group(1) + indent + m.group(2) prev_table = self._body[index - 1] if 0 < index and length else None next_table = self._body[index + 1] if index < length - 1 else None if not self._parsed: if prev_table and "\n" not in value.trivia.indent: value.trivia.indent = "\n" + value.trivia.indent if next_table and "\n" not in next_table.trivia.indent: next_table.trivia.indent = "\n" + next_table.trivia.indent self._body.insert(index, value) list.insert(self, index, value) def invalidate_display_name(self): """Call ``invalidate_display_name`` on the contained tables""" for child in self: if hasattr(child, "invalidate_display_name"): child.invalidate_display_name() def as_string(self) -> str: b = "" for table in self._body: b += table.as_string() return b def __repr__(self) -> str: return f"" def _getstate(self, protocol=3): return self._body, self.name, self._parsed class Null(Item): """ A null item. """ def __init__(self) -> None: super().__init__(Trivia(trail="")) def unwrap(self) -> None: return None @property def discriminant(self) -> int: return -1 @property def value(self) -> None: return None def as_string(self) -> str: return "" def _getstate(self, protocol=3) -> tuple: return () ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1723623566.100196 tomlkit-0.13.2/tomlkit/parser.py0000644000000000000000000011205714657064216013560 0ustar00from __future__ import annotations import datetime import re import string from tomlkit._compat import decode from tomlkit._utils import RFC_3339_LOOSE from tomlkit._utils import _escaped from tomlkit._utils import parse_rfc3339 from tomlkit.container import Container from tomlkit.exceptions import EmptyKeyError from tomlkit.exceptions import EmptyTableNameError from tomlkit.exceptions import InternalParserError from tomlkit.exceptions import InvalidCharInStringError from tomlkit.exceptions import InvalidControlChar from tomlkit.exceptions import InvalidDateError from tomlkit.exceptions import InvalidDateTimeError from tomlkit.exceptions import InvalidNumberError from tomlkit.exceptions import InvalidTimeError from tomlkit.exceptions import InvalidUnicodeValueError from tomlkit.exceptions import ParseError from tomlkit.exceptions import UnexpectedCharError from tomlkit.exceptions import UnexpectedEofError from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import BoolType from tomlkit.items import Comment from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Item from tomlkit.items import Key from tomlkit.items import KeyType from tomlkit.items import Null from tomlkit.items import SingleKey from tomlkit.items import String from tomlkit.items import StringType from tomlkit.items import Table from tomlkit.items import Time from tomlkit.items import Trivia from tomlkit.items import Whitespace from tomlkit.source import Source from tomlkit.toml_char import TOMLChar from tomlkit.toml_document import TOMLDocument CTRL_I = 0x09 # Tab CTRL_J = 0x0A # Line feed CTRL_M = 0x0D # Carriage return CTRL_CHAR_LIMIT = 0x1F CHR_DEL = 0x7F class Parser: """ Parser for TOML documents. """ def __init__(self, string: str | bytes) -> None: # Input to parse self._src = Source(decode(string)) self._aot_stack: list[Key] = [] @property def _state(self): return self._src.state @property def _idx(self): return self._src.idx @property def _current(self): return self._src.current @property def _marker(self): return self._src.marker def extract(self) -> str: """ Extracts the value between marker and index """ return self._src.extract() def inc(self, exception: type[ParseError] | None = None) -> bool: """ Increments the parser if the end of the input has not been reached. Returns whether or not it was able to advance. """ return self._src.inc(exception=exception) def inc_n(self, n: int, exception: type[ParseError] | None = None) -> bool: """ Increments the parser by n characters if the end of the input has not been reached. """ return self._src.inc_n(n=n, exception=exception) def consume(self, chars, min=0, max=-1): """ Consume chars until min/max is satisfied is valid. """ return self._src.consume(chars=chars, min=min, max=max) def end(self) -> bool: """ Returns True if the parser has reached the end of the input. """ return self._src.end() def mark(self) -> None: """ Sets the marker to the index's current position """ self._src.mark() def parse_error(self, exception=ParseError, *args, **kwargs): """ Creates a generic "parse error" at the current position. """ return self._src.parse_error(exception, *args, **kwargs) def parse(self) -> TOMLDocument: body = TOMLDocument(True) # Take all keyvals outside of tables/AoT's. while not self.end(): # Break out if a table is found if self._current == "[": break # Otherwise, take and append one KV item = self._parse_item() if not item: break key, value = item if (key is not None and key.is_multi()) or not self._merge_ws(value, body): # We actually have a table try: body.append(key, value) except Exception as e: raise self.parse_error(ParseError, str(e)) from e self.mark() while not self.end(): key, value = self._parse_table() if isinstance(value, Table) and value.is_aot_element(): # This is just the first table in an AoT. Parse the rest of the array # along with it. value = self._parse_aot(value, key) try: body.append(key, value) except Exception as e: raise self.parse_error(ParseError, str(e)) from e body.parsing(False) return body def _merge_ws(self, item: Item, container: Container) -> bool: """ Merges the given Item with the last one currently in the given Container if both are whitespace items. Returns True if the items were merged. """ last = container.last_item() if not last: return False if not isinstance(item, Whitespace) or not isinstance(last, Whitespace): return False start = self._idx - (len(last.s) + len(item.s)) container.body[-1] = ( container.body[-1][0], Whitespace(self._src[start : self._idx]), ) return True def _is_child(self, parent: Key, child: Key) -> bool: """ Returns whether a key is strictly a child of another key. AoT siblings are not considered children of one another. """ parent_parts = tuple(parent) child_parts = tuple(child) if parent_parts == child_parts: return False return parent_parts == child_parts[: len(parent_parts)] def _parse_item(self) -> tuple[Key | None, Item] | None: """ Attempts to parse the next item and returns it, along with its key if the item is value-like. """ self.mark() with self._state as state: while True: c = self._current if c == "\n": # Found a newline; Return all whitespace found up to this point. self.inc() return None, Whitespace(self.extract()) elif c in " \t\r": # Skip whitespace. if not self.inc(): return None, Whitespace(self.extract()) elif c == "#": # Found a comment, parse it indent = self.extract() cws, comment, trail = self._parse_comment_trail() return None, Comment(Trivia(indent, cws, comment, trail)) elif c == "[": # Found a table, delegate to the calling function. return else: # Beginning of a KV pair. # Return to beginning of whitespace so it gets included # as indentation for the KV about to be parsed. state.restore = True break return self._parse_key_value(True) def _parse_comment_trail(self, parse_trail: bool = True) -> tuple[str, str, str]: """ Returns (comment_ws, comment, trail) If there is no comment, comment_ws and comment will simply be empty. """ if self.end(): return "", "", "" comment = "" comment_ws = "" self.mark() while True: c = self._current if c == "\n": break elif c == "#": comment_ws = self.extract() self.mark() self.inc() # Skip # # The comment itself while not self.end() and not self._current.is_nl(): code = ord(self._current) if code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != CTRL_I: raise self.parse_error(InvalidControlChar, code, "comments") if not self.inc(): break comment = self.extract() self.mark() break elif c in " \t\r": self.inc() else: raise self.parse_error(UnexpectedCharError, c) if self.end(): break trail = "" if parse_trail: while self._current.is_spaces() and self.inc(): pass if self._current == "\r": self.inc() if self._current == "\n": self.inc() if self._idx != self._marker or self._current.is_ws(): trail = self.extract() return comment_ws, comment, trail def _parse_key_value(self, parse_comment: bool = False) -> tuple[Key, Item]: # Leading indent self.mark() while self._current.is_spaces() and self.inc(): pass indent = self.extract() # Key key = self._parse_key() self.mark() found_equals = self._current == "=" while self._current.is_kv_sep() and self.inc(): if self._current == "=": if found_equals: raise self.parse_error(UnexpectedCharError, "=") else: found_equals = True if not found_equals: raise self.parse_error(UnexpectedCharError, self._current) if not key.sep: key.sep = self.extract() else: key.sep += self.extract() # Value val = self._parse_value() # Comment if parse_comment: cws, comment, trail = self._parse_comment_trail() meta = val.trivia if not meta.comment_ws: meta.comment_ws = cws meta.comment = comment meta.trail = trail else: val.trivia.trail = "" val.trivia.indent = indent return key, val def _parse_key(self) -> Key: """ Parses a Key at the current position; WS before the key must be exhausted first at the callsite. """ self.mark() while self._current.is_spaces() and self.inc(): # Skip any leading whitespace pass if self._current in "\"'": return self._parse_quoted_key() else: return self._parse_bare_key() def _parse_quoted_key(self) -> Key: """ Parses a key enclosed in either single or double quotes. """ # Extract the leading whitespace original = self.extract() quote_style = self._current key_type = next((t for t in KeyType if t.value == quote_style), None) if key_type is None: raise RuntimeError("Should not have entered _parse_quoted_key()") key_str = self._parse_string( StringType.SLB if key_type == KeyType.Basic else StringType.SLL ) if key_str._t.is_multiline(): raise self.parse_error(UnexpectedCharError, key_str._t.value) original += key_str.as_string() self.mark() while self._current.is_spaces() and self.inc(): pass original += self.extract() key = SingleKey(str(key_str), t=key_type, sep="", original=original) if self._current == ".": self.inc() key = key.concat(self._parse_key()) return key def _parse_bare_key(self) -> Key: """ Parses a bare key. """ while ( self._current.is_bare_key_char() or self._current.is_spaces() ) and self.inc(): pass original = self.extract() key = original.strip() if not key: # Empty key raise self.parse_error(EmptyKeyError) if " " in key: # Bare key with spaces in it raise self.parse_error(ParseError, f'Invalid key "{key}"') key = SingleKey(key, KeyType.Bare, "", original) if self._current == ".": self.inc() key = key.concat(self._parse_key()) return key def _parse_value(self) -> Item: """ Attempts to parse a value at the current position. """ self.mark() c = self._current trivia = Trivia() if c == StringType.SLB.value: return self._parse_basic_string() elif c == StringType.SLL.value: return self._parse_literal_string() elif c == BoolType.TRUE.value[0]: return self._parse_true() elif c == BoolType.FALSE.value[0]: return self._parse_false() elif c == "[": return self._parse_array() elif c == "{": return self._parse_inline_table() elif c in "+-" or self._peek(4) in { "+inf", "-inf", "inf", "+nan", "-nan", "nan", }: # Number while self._current not in " \t\n\r#,]}" and self.inc(): pass raw = self.extract() item = self._parse_number(raw, trivia) if item is not None: return item raise self.parse_error(InvalidNumberError) elif c in string.digits: # Integer, Float, Date, Time or DateTime while self._current not in " \t\n\r#,]}" and self.inc(): pass raw = self.extract() m = RFC_3339_LOOSE.match(raw) if m: if m.group(1) and m.group(5): # datetime try: dt = parse_rfc3339(raw) assert isinstance(dt, datetime.datetime) return DateTime( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo, trivia, raw, ) except ValueError: raise self.parse_error(InvalidDateTimeError) from None if m.group(1): try: dt = parse_rfc3339(raw) assert isinstance(dt, datetime.date) date = Date(dt.year, dt.month, dt.day, trivia, raw) self.mark() while self._current not in "\t\n\r#,]}" and self.inc(): pass time_raw = self.extract() time_part = time_raw.rstrip() trivia.comment_ws = time_raw[len(time_part) :] if not time_part: return date dt = parse_rfc3339(raw + time_part) assert isinstance(dt, datetime.datetime) return DateTime( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo, trivia, raw + time_part, ) except ValueError: raise self.parse_error(InvalidDateError) from None if m.group(5): try: t = parse_rfc3339(raw) assert isinstance(t, datetime.time) return Time( t.hour, t.minute, t.second, t.microsecond, t.tzinfo, trivia, raw, ) except ValueError: raise self.parse_error(InvalidTimeError) from None item = self._parse_number(raw, trivia) if item is not None: return item raise self.parse_error(InvalidNumberError) else: raise self.parse_error(UnexpectedCharError, c) def _parse_true(self): return self._parse_bool(BoolType.TRUE) def _parse_false(self): return self._parse_bool(BoolType.FALSE) def _parse_bool(self, style: BoolType) -> Bool: with self._state: style = BoolType(style) # only keep parsing for bool if the characters match the style # try consuming rest of chars in style for c in style: self.consume(c, min=1, max=1) return Bool(style, Trivia()) def _parse_array(self) -> Array: # Consume opening bracket, EOF here is an issue (middle of array) self.inc(exception=UnexpectedEofError) elems: list[Item] = [] prev_value = None while True: # consume whitespace mark = self._idx self.consume(TOMLChar.SPACES + TOMLChar.NL) indent = self._src[mark : self._idx] newline = set(TOMLChar.NL) & set(indent) if newline: elems.append(Whitespace(indent)) continue # consume comment if self._current == "#": cws, comment, trail = self._parse_comment_trail(parse_trail=False) elems.append(Comment(Trivia(indent, cws, comment, trail))) continue # consume indent if indent: elems.append(Whitespace(indent)) continue # consume value if not prev_value: try: elems.append(self._parse_value()) prev_value = True continue except UnexpectedCharError: pass # consume comma if prev_value and self._current == ",": self.inc(exception=UnexpectedEofError) elems.append(Whitespace(",")) prev_value = False continue # consume closing bracket if self._current == "]": # consume closing bracket, EOF here doesn't matter self.inc() break raise self.parse_error(UnexpectedCharError, self._current) try: res = Array(elems, Trivia()) except ValueError: pass else: return res def _parse_inline_table(self) -> InlineTable: # consume opening bracket, EOF here is an issue (middle of array) self.inc(exception=UnexpectedEofError) elems = Container(True) trailing_comma = None while True: # consume leading whitespace mark = self._idx self.consume(TOMLChar.SPACES) raw = self._src[mark : self._idx] if raw: elems.add(Whitespace(raw)) if not trailing_comma: # None: empty inline table # False: previous key-value pair was not followed by a comma if self._current == "}": # consume closing bracket, EOF here doesn't matter self.inc() break if ( trailing_comma is False or trailing_comma is None and self._current == "," ): # Either the previous key-value pair was not followed by a comma # or the table has an unexpected leading comma. raise self.parse_error(UnexpectedCharError, self._current) else: # True: previous key-value pair was followed by a comma if self._current == "}" or self._current == ",": raise self.parse_error(UnexpectedCharError, self._current) key, val = self._parse_key_value(False) elems.add(key, val) # consume trailing whitespace mark = self._idx self.consume(TOMLChar.SPACES) raw = self._src[mark : self._idx] if raw: elems.add(Whitespace(raw)) # consume trailing comma trailing_comma = self._current == "," if trailing_comma: # consume closing bracket, EOF here is an issue (middle of inline table) self.inc(exception=UnexpectedEofError) return InlineTable(elems, Trivia()) def _parse_number(self, raw: str, trivia: Trivia) -> Item | None: # Leading zeros are not allowed sign = "" if raw.startswith(("+", "-")): sign = raw[0] raw = raw[1:] if len(raw) > 1 and ( raw.startswith("0") and not raw.startswith(("0.", "0o", "0x", "0b", "0e")) or sign and raw.startswith(".") ): return None if raw.startswith(("0o", "0x", "0b")) and sign: return None digits = "[0-9]" base = 10 if raw.startswith("0b"): digits = "[01]" base = 2 elif raw.startswith("0o"): digits = "[0-7]" base = 8 elif raw.startswith("0x"): digits = "[0-9a-f]" base = 16 # Underscores should be surrounded by digits clean = re.sub(f"(?i)(?<={digits})_(?={digits})", "", raw).lower() if "_" in clean: return None if ( clean.endswith(".") or not clean.startswith("0x") and clean.split("e", 1)[0].endswith(".") ): return None try: return Integer(int(sign + clean, base), trivia, sign + raw) except ValueError: try: return Float(float(sign + clean), trivia, sign + raw) except ValueError: return None def _parse_literal_string(self) -> String: with self._state: return self._parse_string(StringType.SLL) def _parse_basic_string(self) -> String: with self._state: return self._parse_string(StringType.SLB) def _parse_escaped_char(self, multiline): if multiline and self._current.is_ws(): # When the last non-whitespace character on a line is # a \, it will be trimmed along with all whitespace # (including newlines) up to the next non-whitespace # character or closing delimiter. # """\ # hello \ # world""" tmp = "" while self._current.is_ws(): tmp += self._current # consume the whitespace, EOF here is an issue # (middle of string) self.inc(exception=UnexpectedEofError) continue # the escape followed by whitespace must have a newline # before any other chars if "\n" not in tmp: raise self.parse_error(InvalidCharInStringError, self._current) return "" if self._current in _escaped: c = _escaped[self._current] # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) return c if self._current in {"u", "U"}: # this needs to be a unicode u, ue = self._peek_unicode(self._current == "U") if u is not None: # consume the U char and the unicode value self.inc_n(len(ue) + 1) return u raise self.parse_error(InvalidUnicodeValueError) raise self.parse_error(InvalidCharInStringError, self._current) def _parse_string(self, delim: StringType) -> String: # only keep parsing for string if the current character matches the delim if self._current != delim.unit: raise self.parse_error( InternalParserError, f"Invalid character for string type {delim}", ) # consume the opening/first delim, EOF here is an issue # (middle of string or middle of delim) self.inc(exception=UnexpectedEofError) if self._current == delim.unit: # consume the closing/second delim, we do not care if EOF occurs as # that would simply imply an empty single line string if not self.inc() or self._current != delim.unit: # Empty string return String(delim, "", "", Trivia()) # consume the third delim, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) delim = delim.toggle() # convert delim to multi delim self.mark() # to extract the original string with whitespace and all value = "" # A newline immediately following the opening delimiter will be trimmed. if delim.is_multiline(): if self._current == "\n": # consume the newline, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) else: cur = self._current with self._state(restore=True): if self.inc(): cur += self._current if cur == "\r\n": self.inc_n(2, exception=UnexpectedEofError) escaped = False # whether the previous key was ESCAPE while True: code = ord(self._current) if ( delim.is_singleline() and not escaped and (code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != CTRL_I) ) or ( delim.is_multiline() and not escaped and ( code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code not in [CTRL_I, CTRL_J, CTRL_M] ) ): raise self.parse_error(InvalidControlChar, code, "strings") elif not escaped and self._current == delim.unit: # try to process current as a closing delim original = self.extract() close = "" if delim.is_multiline(): # Consume the delimiters to see if we are at the end of the string close = "" while self._current == delim.unit: close += self._current self.inc() if len(close) < 3: # Not a triple quote, leave in result as-is. # Adding back the characters we already consumed value += close continue if len(close) == 3: # We are at the end of the string return String(delim, value, original, Trivia()) if len(close) >= 6: raise self.parse_error(InvalidCharInStringError, self._current) value += close[:-3] original += close[:-3] return String(delim, value, original, Trivia()) else: # consume the closing delim, we do not care if EOF occurs as # that would simply imply the end of self._src self.inc() return String(delim, value, original, Trivia()) elif delim.is_basic() and escaped: # attempt to parse the current char as an escaped value, an exception # is raised if this fails value += self._parse_escaped_char(delim.is_multiline()) # no longer escaped escaped = False elif delim.is_basic() and self._current == "\\": # the next char is being escaped escaped = True # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) else: # this is either a literal string where we keep everything as is, # or this is not a special escaped char in a basic string value += self._current # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) def _parse_table( self, parent_name: Key | None = None, parent: Table | None = None ) -> tuple[Key, Table | AoT]: """ Parses a table element. """ if self._current != "[": raise self.parse_error( InternalParserError, "_parse_table() called on non-bracket character." ) indent = self.extract() self.inc() # Skip opening bracket if self.end(): raise self.parse_error(UnexpectedEofError) is_aot = False if self._current == "[": if not self.inc(): raise self.parse_error(UnexpectedEofError) is_aot = True try: key = self._parse_key() except EmptyKeyError: raise self.parse_error(EmptyTableNameError) from None if self.end(): raise self.parse_error(UnexpectedEofError) elif self._current != "]": raise self.parse_error(UnexpectedCharError, self._current) key.sep = "" full_key = key name_parts = tuple(key) if any(" " in part.key.strip() and part.is_bare() for part in name_parts): raise self.parse_error( ParseError, f'Invalid table name "{full_key.as_string()}"' ) missing_table = False if parent_name: parent_name_parts = tuple(parent_name) else: parent_name_parts = () if len(name_parts) > len(parent_name_parts) + 1: missing_table = True name_parts = name_parts[len(parent_name_parts) :] values = Container(True) self.inc() # Skip closing bracket if is_aot: # TODO: Verify close bracket self.inc() cws, comment, trail = self._parse_comment_trail() result = Null() table = Table( values, Trivia(indent, cws, comment, trail), is_aot, name=name_parts[0].key if name_parts else key.key, display_name=full_key.as_string(), is_super_table=False, ) if len(name_parts) > 1: if missing_table: # Missing super table # i.e. a table initialized like this: [foo.bar] # without initializing [foo] # # So we have to create the parent tables table = Table( Container(True), Trivia("", cws, comment, trail), is_aot and name_parts[0] in self._aot_stack, is_super_table=True, name=name_parts[0].key, ) result = table key = name_parts[0] for i, _name in enumerate(name_parts[1:]): child = table.get( _name, Table( Container(True), Trivia(indent, cws, comment, trail), is_aot and i == len(name_parts) - 2, is_super_table=i < len(name_parts) - 2, name=_name.key, display_name=( full_key.as_string() if i == len(name_parts) - 2 else None ), ), ) if is_aot and i == len(name_parts) - 2: table.raw_append(_name, AoT([child], name=table.name, parsed=True)) else: table.raw_append(_name, child) table = child values = table.value else: if name_parts: key = name_parts[0] while not self.end(): item = self._parse_item() if item: _key, item = item if not self._merge_ws(item, values): table.raw_append(_key, item) else: if self._current == "[": _, key_next = self._peek_table() if self._is_child(full_key, key_next): key_next, table_next = self._parse_table(full_key, table) table.raw_append(key_next, table_next) # Picking up any sibling while not self.end(): _, key_next = self._peek_table() if not self._is_child(full_key, key_next): break key_next, table_next = self._parse_table(full_key, table) table.raw_append(key_next, table_next) break else: raise self.parse_error( InternalParserError, "_parse_item() returned None on a non-bracket character.", ) table.value._validate_out_of_order_table() if isinstance(result, Null): result = table if is_aot and (not self._aot_stack or full_key != self._aot_stack[-1]): result = self._parse_aot(result, full_key) return key, result def _peek_table(self) -> tuple[bool, Key]: """ Peeks ahead non-intrusively by cloning then restoring the initial state of the parser. Returns the name of the table about to be parsed, as well as whether it is part of an AoT. """ # we always want to restore after exiting this scope with self._state(save_marker=True, restore=True): if self._current != "[": raise self.parse_error( InternalParserError, "_peek_table() entered on non-bracket character", ) # AoT self.inc() is_aot = False if self._current == "[": self.inc() is_aot = True try: return is_aot, self._parse_key() except EmptyKeyError: raise self.parse_error(EmptyTableNameError) from None def _parse_aot(self, first: Table, name_first: Key) -> AoT: """ Parses all siblings of the provided table first and bundles them into an AoT. """ payload = [first] self._aot_stack.append(name_first) while not self.end(): is_aot_next, name_next = self._peek_table() if is_aot_next and name_next == name_first: _, table = self._parse_table(name_first) payload.append(table) else: break self._aot_stack.pop() return AoT(payload, parsed=True) def _peek(self, n: int) -> str: """ Peeks ahead n characters. n is the max number of characters that will be peeked. """ # we always want to restore after exiting this scope with self._state(restore=True): buf = "" for _ in range(n): if self._current not in " \t\n\r#,]}" + self._src.EOF: buf += self._current self.inc() continue break return buf def _peek_unicode(self, is_long: bool) -> tuple[str | None, str | None]: """ Peeks ahead non-intrusively by cloning then restoring the initial state of the parser. Returns the unicode value is it's a valid one else None. """ # we always want to restore after exiting this scope with self._state(save_marker=True, restore=True): if self._current not in {"u", "U"}: raise self.parse_error( InternalParserError, "_peek_unicode() entered on non-unicode value" ) self.inc() # Dropping prefix self.mark() if is_long: chars = 8 else: chars = 4 if not self.inc_n(chars): value, extracted = None, None else: extracted = self.extract() if extracted[0].lower() == "d" and extracted[1].strip("01234567"): return None, None try: value = chr(int(extracted, 16)) except (ValueError, OverflowError): value = None return value, extracted ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1723623566.100196 tomlkit-0.13.2/tomlkit/py.typed0000644000000000000000000000000014657064216013371 0ustar00././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1723623566.100196 tomlkit-0.13.2/tomlkit/source.py0000644000000000000000000001134314657064216013560 0ustar00from __future__ import annotations from copy import copy from typing import Any from tomlkit.exceptions import ParseError from tomlkit.exceptions import UnexpectedCharError from tomlkit.toml_char import TOMLChar class _State: def __init__( self, source: Source, save_marker: bool | None = False, restore: bool | None = False, ) -> None: self._source = source self._save_marker = save_marker self.restore = restore def __enter__(self) -> _State: # Entering this context manager - save the state self._chars = copy(self._source._chars) self._idx = self._source._idx self._current = self._source._current self._marker = self._source._marker return self def __exit__(self, exception_type, exception_val, trace): # Exiting this context manager - restore the prior state if self.restore or exception_type: self._source._chars = self._chars self._source._idx = self._idx self._source._current = self._current if self._save_marker: self._source._marker = self._marker class _StateHandler: """ State preserver for the Parser. """ def __init__(self, source: Source) -> None: self._source = source self._states = [] def __call__(self, *args, **kwargs): return _State(self._source, *args, **kwargs) def __enter__(self) -> _State: state = self() self._states.append(state) return state.__enter__() def __exit__(self, exception_type, exception_val, trace): state = self._states.pop() return state.__exit__(exception_type, exception_val, trace) class Source(str): EOF = TOMLChar("\0") def __init__(self, _: str) -> None: super().__init__() # Collection of TOMLChars self._chars = iter([(i, TOMLChar(c)) for i, c in enumerate(self)]) self._idx = 0 self._marker = 0 self._current = TOMLChar("") self._state = _StateHandler(self) self.inc() def reset(self): # initialize both idx and current self.inc() # reset marker self.mark() @property def state(self) -> _StateHandler: return self._state @property def idx(self) -> int: return self._idx @property def current(self) -> TOMLChar: return self._current @property def marker(self) -> int: return self._marker def extract(self) -> str: """ Extracts the value between marker and index """ return self[self._marker : self._idx] def inc(self, exception: type[ParseError] | None = None) -> bool: """ Increments the parser if the end of the input has not been reached. Returns whether or not it was able to advance. """ try: self._idx, self._current = next(self._chars) return True except StopIteration: self._idx = len(self) self._current = self.EOF if exception: raise self.parse_error(exception) from None return False def inc_n(self, n: int, exception: type[ParseError] | None = None) -> bool: """ Increments the parser by n characters if the end of the input has not been reached. """ return all(self.inc(exception=exception) for _ in range(n)) def consume(self, chars, min=0, max=-1): """ Consume chars until min/max is satisfied is valid. """ while self.current in chars and max != 0: min -= 1 max -= 1 if not self.inc(): break # failed to consume minimum number of characters if min > 0: raise self.parse_error(UnexpectedCharError, self.current) def end(self) -> bool: """ Returns True if the parser has reached the end of the input. """ return self._current is self.EOF def mark(self) -> None: """ Sets the marker to the index's current position """ self._marker = self._idx def parse_error( self, exception: type[ParseError] = ParseError, *args: Any, **kwargs: Any, ) -> ParseError: """ Creates a generic "parse error" at the current position. """ line, col = self._to_linecol() return exception(line, col, *args, **kwargs) def _to_linecol(self) -> tuple[int, int]: cur = 0 for i, line in enumerate(self.splitlines()): if cur + len(line) + 1 > self.idx: return (i + 1, self.idx - cur) cur += len(line) + 1 return len(self.splitlines()), 0 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1723623566.100196 tomlkit-0.13.2/tomlkit/toml_char.py0000644000000000000000000000241314657064216014226 0ustar00import string class TOMLChar(str): def __init__(self, c): super().__init__() if len(self) > 1: raise ValueError("A TOML character must be of length 1") BARE = string.ascii_letters + string.digits + "-_" KV = "= \t" NUMBER = string.digits + "+-_.e" SPACES = " \t" NL = "\n\r" WS = SPACES + NL def is_bare_key_char(self) -> bool: """ Whether the character is a valid bare key name or not. """ return self in self.BARE def is_kv_sep(self) -> bool: """ Whether the character is a valid key/value separator or not. """ return self in self.KV def is_int_float_char(self) -> bool: """ Whether the character if a valid integer or float value character or not. """ return self in self.NUMBER def is_ws(self) -> bool: """ Whether the character is a whitespace character or not. """ return self in self.WS def is_nl(self) -> bool: """ Whether the character is a new line character or not. """ return self in self.NL def is_spaces(self) -> bool: """ Whether the character is a space or not """ return self in self.SPACES ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1723623566.100196 tomlkit-0.13.2/tomlkit/toml_document.py0000644000000000000000000000015614657064216015131 0ustar00from tomlkit.container import Container class TOMLDocument(Container): """ A TOML document. """ ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1723623566.100196 tomlkit-0.13.2/tomlkit/toml_file.py0000644000000000000000000000307714657064216014237 0ustar00import os import re from typing import TYPE_CHECKING from tomlkit.api import loads from tomlkit.toml_document import TOMLDocument if TYPE_CHECKING: from _typeshed import StrPath as _StrPath else: from typing import Union _StrPath = Union[str, os.PathLike] class TOMLFile: """ Represents a TOML file. :param path: path to the TOML file """ def __init__(self, path: _StrPath) -> None: self._path = path self._linesep = os.linesep def read(self) -> TOMLDocument: """Read the file content as a :class:`tomlkit.toml_document.TOMLDocument`.""" with open(self._path, encoding="utf-8", newline="") as f: content = f.read() # check if consistent line endings num_newline = content.count("\n") if num_newline > 0: num_win_eol = content.count("\r\n") if num_win_eol == num_newline: self._linesep = "\r\n" elif num_win_eol == 0: self._linesep = "\n" else: self._linesep = "mixed" return loads(content) def write(self, data: TOMLDocument) -> None: """Write the TOMLDocument to the file.""" content = data.as_string() # apply linesep if self._linesep == "\n": content = content.replace("\r\n", "\n") elif self._linesep == "\r\n": content = re.sub(r"(?=3.8 Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Project-URL: Repository, https://github.com/sdispater/tomlkit Description-Content-Type: text/markdown [github_release]: https://img.shields.io/github/release/sdispater/tomlkit.svg?logo=github&logoColor=white [pypi_version]: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white [python_versions]: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white [github_license]: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white [github_action]: https://github.com/sdispater/tomlkit/actions/workflows/tests.yml/badge.svg [![GitHub Release][github_release]](https://github.com/sdispater/tomlkit/releases/) [![PyPI Version][pypi_version]](https://pypi.org/project/tomlkit/) [![Python Versions][python_versions]](https://pypi.org/project/tomlkit/) [![License][github_license]](https://github.com/sdispater/tomlkit/blob/master/LICENSE)
[![Tests][github_action]](https://github.com/sdispater/tomlkit/actions/workflows/tests.yml) # TOML Kit - Style-preserving TOML library for Python TOML Kit is a **1.0.0-compliant** [TOML](https://toml.io/) library. It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes them accessible and editable via an intuitive API. You can also create new TOML documents from scratch using the provided helpers. Part of the implementation has been adapted, improved and fixed from [Molten](https://github.com/LeopoldArkham/Molten). ## Usage See the [documentation](https://tomlkit.readthedocs.io/) for more information. ## Installation If you are using [Poetry](https://poetry.eustace.io), add `tomlkit` to your `pyproject.toml` file by using: ```bash poetry add tomlkit ``` If not, you can use `pip`: ```bash pip install tomlkit ``` ## Running tests Please clone the repo with submodules with the following command `git clone --recurse-submodules https://github.com/sdispater/tomlkit.git`. We need the submodule - `toml-test` for running the tests. You can run the tests with `poetry run pytest -q tests`