Codebase list loguru / 4eb4202
New upstream snapshot. Debian Janitor 2 years ago
221 changed file(s) with 2451 addition(s) and 3120 deletion(s). Raw diff Collapse all Expand all
+0
-10
.codecov.yml less more
0 comment: false
1
2 coverage:
3 status:
4 patch: no
5 changes: no
6 project:
7 default:
8 target: 100%
9 threshold: null
+0
-107
.gitignore less more
0 # Byte-compiled / optimized / DLL files
1 __pycache__/
2 *.py[cod]
3 *$py.class
4
5 # C extensions
6 *.so
7
8 # Distribution / packaging
9 .Python
10 env/
11 build/
12 develop-eggs/
13 dist/
14 downloads/
15 eggs/
16 .eggs/
17 lib/
18 lib64/
19 parts/
20 sdist/
21 var/
22 wheels/
23 *.egg-info/
24 .installed.cfg
25 *.egg
26
27 # PyInstaller
28 # Usually these files are written by a python script from a template
29 # before PyInstaller builds the exe, so as to inject date/other infos into it.
30 *.manifest
31 *.spec
32
33 # Installer logs
34 pip-log.txt
35 pip-delete-this-directory.txt
36
37 # Unit test / coverage reports
38 htmlcov/
39 .tox/
40 .coverage
41 .coverage.*
42 .cache
43 nosetests.xml
44 coverage.xml
45 *.cover
46 .hypothesis/
47
48 # Translations
49 *.mo
50 *.pot
51
52 # Django stuff:
53 *.log
54 local_settings.py
55
56 # Flask stuff:
57 instance/
58 .webassets-cache
59
60 # Scrapy stuff:
61 .scrapy
62
63 # Sphinx documentation
64 docs/_build/
65
66 # PyBuilder
67 target/
68
69 # Jupyter Notebook
70 .ipynb_checkpoints
71
72 # pyenv
73 .python-version
74
75 # celery beat schedule file
76 celerybeat-schedule
77
78 # SageMath parsed files
79 *.sage.py
80
81 # dotenv
82 .env
83
84 # virtualenv
85 .venv
86 venv/
87 ENV/
88
89 # Spyder project settings
90 .spyderproject
91 .spyproject
92
93 # Rope project settings
94 .ropeproject
95
96 # mkdocs documentation
97 /site
98
99 # mypy
100 .mypy_cache/
101
102 # VScode
103 .vscode/
104
105 # Idea IDE
106 .idea/
+0
-8
.readthedocs.yml less more
0 build:
1 image: latest
2
3 python:
4 version: 3.7
5 pip_install: true
6 extra_requirements:
7 - dev
+0
-26
.travis.yml less more
0 language: python
1
2 os: linux
3
4 dist: xenial
5
6 python:
7 - '3.5.2'
8 - '3.5'
9 - '3.6'
10 - '3.7'
11 - '3.8'
12 - 'pypy3.5'
13
14 install:
15 - pip install tox-travis codecov
16
17 script: tox
18
19 after_success: |
20 VERSION="python_${TRAVIS_PYTHON_VERSION//[^[:alnum:]]/}" &&
21 codecov --required --flags $VERSION ||
22 (sleep 5 && codecov --required --flags $VERSION) ||
23 (sleep 10 && codecov --required --flags $VERSION) ||
24 (sleep 20 && codecov --required --flags $VERSION) ||
25 (sleep 30 && codecov --required --flags $VERSION)
+0
-192
CHANGELOG.rst less more
0 `0.5.3`_ (2020-09-20)
1 =====================
2
3 - Fix child process possibly hanging at exit while combining ``enqueue=True`` with third party library like ``uwsgi`` (`#309 <https://github.com/Delgan/loguru/issues/309>`_, thanks `@dstlmrk <https://github.com/dstlmrk>`_).
4 - Fix possible exception during formatting of non-string messages (`#331 <https://github.com/Delgan/loguru/issues/331>`_).
5
6
7 `0.5.2`_ (2020-09-06)
8 =====================
9
10 - Fix ``AttributeError`` within handlers using ``serialize=True`` when calling ``logger.exception()`` outside of the context of an exception (`#296 <https://github.com/Delgan/loguru/issues/296>`_).
11 - Fix error while logging an exception containing a non-picklable ``value`` to a handler with ``enqueue=True`` (`#298 <https://github.com/Delgan/loguru/issues/298>`_).
12 - Add support for async callable classes (with ``__call__`` method) used as sinks (`#294 <https://github.com/Delgan/loguru/pull/294>`_, thanks `@jessekrubin <https://github.com/jessekrubin>`_).
13
14
15 `0.5.1`_ (2020-06-12)
16 =====================
17
18 - Modify the way the ``extra`` dict is used by ``LogRecord`` in order to prevent possible ``KeyError`` with standard ``logging`` handlers (`#271 <https://github.com/Delgan/loguru/issues/271>`_).
19 - Add a new ``default`` optional argument to ``logger.catch()``, it should be the returned value by the decorated function in case an error occurred (`#272 <https://github.com/Delgan/loguru/issues/272>`_).
20 - Fix ``ValueError`` when using ``serialize=True`` in combination with ``logger.catch()`` or ``logger.opt(record=True)`` due to circular reference of the ``record`` dict (`#286 <https://github.com/Delgan/loguru/issues/286>`_).
21
22
23 `0.5.0`_ (2020-05-17)
24 =====================
25
26 - Remove the possibility to modify the severity ``no`` of levels once they have been added in order to prevent surprising behavior (`#209 <https://github.com/Delgan/loguru/issues/209>`_).
27 - Add better support for "structured logging" by automatically adding ``**kwargs`` to the ``extra`` dict besides using these arguments to format the message. This behavior can be disabled by setting the new ``.opt(capture=False)`` parameter (`#2 <https://github.com/Delgan/loguru/issues/2>`_).
28 - Add a new ``onerror`` optional argument to ``logger.catch()``, it should be a function which will be called when an exception occurs in order to customize error handling (`#224 <https://github.com/Delgan/loguru/issues/224>`_).
29 - Add a new ``exclude`` optional argument to ``logger.catch()``, is should be a type of exception to be purposefully ignored and propagated to the caller without being logged (`#248 <https://github.com/Delgan/loguru/issues/248>`_).
30 - Modify ``complete()`` to make it callable from non-asynchronous functions, it can thus be used if ``enqueue=True`` to make sure all messages have been processed (`#231 <https://github.com/Delgan/loguru/issues/231>`_).
31 - Fix possible deadlocks on Linux when ``multiprocessing.Process()`` collides with ``enqueue=True`` or ``threading`` (`#231 <https://github.com/Delgan/loguru/issues/231>`_).
32 - Fix ``compression`` function not executable concurrently due to file renaming (to resolve conflicts) being performed after and not before it (`#243 <https://github.com/Delgan/loguru/issues/243>`_).
33 - Fix the filter function listing files for ``retention`` being too restrictive, it now matches files based on the pattern ``"basename(.*).ext(.*)"`` (`#229 <https://github.com/Delgan/loguru/issues/229>`_).
34 - Fix the impossibility to ``remove()`` a handler if an exception is raised while the sink' ``stop()`` function is called (`#237 <https://github.com/Delgan/loguru/issues/237>`_).
35 - Fix file sink left in an unstable state if an exception occurred during ``retention`` or ``compression`` process (`#238 <https://github.com/Delgan/loguru/issues/238>`_).
36 - Fix situation where changes made to ``record["message"]`` were unexpectedly ignored when ``opt(colors=True)``, causing "out-of-date" ``message`` to be logged due to implementation details (`#221 <https://github.com/Delgan/loguru/issues/221>`_).
37 - Fix possible exception if a stream having an ``isatty()`` method returning ``True`` but not being compatible with ``colorama`` is used on Windows (`#249 <https://github.com/Delgan/loguru/issues/249>`_).
38 - Fix exceptions occurring in coroutine sinks never retrieved and hence causing warnings (`#227 <https://github.com/Delgan/loguru/issues/227>`_).
39
40
41 `0.4.1`_ (2020-01-19)
42 =====================
43
44 - Deprecate the ``ansi`` parameter of ``.opt()`` in favor of ``colors`` which is a name more appropriate.
45 - Prevent unrelated files and directories to be incorrectly collected thus causing errors during the ``retention`` process (`#195 <https://github.com/Delgan/loguru/issues/195>`_, thanks `@gazpachoking <https://github.com/gazpachoking>`_).
46 - Strip color markups contained in ``record["message"]`` when logging with ``.opt(ansi=True)`` instead of leaving them as is (`#198 <https://github.com/Delgan/loguru/issues/198>`_).
47 - Ignore color markups contained in ``*args`` and ``**kwargs`` when logging with ``.opt(ansi=True)``, leave them as is instead of trying to use them to colorize the message which could cause undesirable errors (`#197 <https://github.com/Delgan/loguru/issues/197>`_).
48
49
50 `0.4.0`_ (2019-12-02)
51 =====================
52
53 - Add support for coroutine functions used as sinks and add the new ``logger.complete()`` asynchronous method to ``await`` them (`#171 <https://github.com/Delgan/loguru/issues/171>`_).
54 - Add a way to filter logs using one level per module in the form of a ``dict`` passed to the ``filter`` argument (`#148 <https://github.com/Delgan/loguru/issues/148>`_).
55 - Add type hints to annotate the public methods using a ``.pyi`` stub file (`#162 <https://github.com/Delgan/loguru/issues/162>`_).
56 - Add support for ``copy.deepcopy()`` of the ``logger`` allowing multiple independent loggers with separate set of handlers (`#72 <https://github.com/Delgan/loguru/issues/72>`_).
57 - Add the possibility to convert ``datetime`` to UTC before formatting (in logs and filenames) by adding ``"!UTC"`` at the end of the time format specifier (`#128 <https://github.com/Delgan/loguru/issues/128>`_).
58 - Add the level ``name`` as the first argument of namedtuple returned by the ``.level()`` method.
59 - Remove ``class`` objects from the list of supported sinks and restrict usage of ``**kwargs`` in ``.add()`` to file sink only. User is in charge of instantiating sink and wrapping additional keyword arguments if needed, before passing it to the ``.add()`` method.
60 - Rename the ``logger.configure()`` keyword argument ``patch`` to ``patcher`` so it better matches the signature of ``logger.patch()``.
61 - Fix incompatibility with ``multiprocessing`` on Windows by entirely refactoring the internal structure of the ``logger`` so it can be inherited by child processes along with added handlers (`#108 <https://github.com/Delgan/loguru/issues/108>`_).
62 - Fix ``AttributeError`` while using a file sink on some distributions (like Alpine Linux) missing the ``os.getxattr`` and ``os.setxattr`` functions (`#158 <https://github.com/Delgan/loguru/pull/158>`_, thanks `@joshgordon <https://github.com/joshgordon>`_).
63 - Fix values wrongly displayed for keyword arguments during exception formatting with ``diagnose=True`` (`#144 <https://github.com/Delgan/loguru/issues/144>`_).
64 - Fix logging messages wrongly chopped off at the end while using standard ``logging.Handler`` sinks with ``.opt(raw=True)`` (`#136 <https://github.com/Delgan/loguru/issues/136>`_).
65 - Fix potential errors during rotation if destination file exists due to large resolution clock on Windows (`#179 <https://github.com/Delgan/loguru/issues/179>`_).
66 - Fix an error using a ``filter`` function "by name" while receiving a log with ``record["name"]`` equals to ``None``.
67 - Fix incorrect record displayed while handling errors (if ``catch=True``) occurring because of non-picklable objects (if ``enqueue=True``).
68 - Prevent hypothetical ``ImportError`` if a Python installation is missing the built-in ``distutils`` module (`#118 <https://github.com/Delgan/loguru/issues/118>`_).
69 - Raise ``TypeError`` instead of ``ValueError`` when a ``logger`` method is called with argument of invalid type.
70 - Raise ``ValueError`` if the built-in ``format()`` and ``filter()`` functions are respectively used as ``format`` and ``filter`` arguments of the ``add()`` method. This helps the user to understand the problem, as such a mistake can quite easily occur (`#177 <https://github.com/Delgan/loguru/issues/177>`_).
71 - Remove inheritance of some record dict attributes to ``str`` (for ``"level"``, ``"file"``, ``"thread"`` and ``"process"``).
72 - Give a name to the worker thread used when ``enqueue=True`` (`#174 <https://github.com/Delgan/loguru/pull/174>`_, thanks `@t-mart <https://github.com/t-mart>`_).
73
74
75 `0.3.2`_ (2019-07-21)
76 =====================
77
78 - Fix exception during import when executing Python with ``-s`` and ``-S`` flags causing ``site.USER_SITE`` to be missing (`#114 <https://github.com/Delgan/loguru/issues/114>`_).
79
80
81 `0.3.1`_ (2019-07-13)
82 =====================
83
84 - Fix ``retention`` and ``rotation`` issues when file sink initiliazed with ``delay=True`` (`#113 <https://github.com/Delgan/loguru/issues/113>`_).
85 - Fix ``"sec"`` no longer recognized as a valid duration unit for file ``rotation`` and ``retention`` arguments.
86 - Ensure stack from the caller is displayed while formatting exception of a function decorated with ``@logger.catch`` when ``backtrace=False``.
87 - Modify datetime used to automatically rename conflicting file when rotating (it happens if file already exists because ``"{time}"`` not presents in filename) so it's based on the file creation time rather than the current time.
88
89
90 `0.3.0`_ (2019-06-29)
91 =====================
92
93 - Remove all dependencies previously needed by ``loguru`` (on Windows platform, it solely remains ``colorama`` and ``win32-setctime``).
94 - Add a new ``logger.patch()`` method which can be used to modify the record dict on-the-fly before it's being sent to the handlers.
95 - Modify behavior of sink option ``backtrace`` so it only extends the stacktrace upward, the display of variables values is now controlled with the new ``diagnose`` argument (`#49 <https://github.com/Delgan/loguru/issues/49>`_).
96 - Change behavior of ``rotation`` option in file sinks: it is now based on the file creation time rather than the current time, note that proper support may differ depending on your platform (`#58 <https://github.com/Delgan/loguru/issues/58>`_).
97 - Raise errors on unknowns color tags rather than silently ignoring them (`#57 <https://github.com/Delgan/loguru/issues/57>`_).
98 - Add the possibility to auto-close color tags by using ``</>`` (e.g. ``<yellow>message</>``).
99 - Add coloration of exception traceback even if ``diagnose`` and ``backtrace`` options are ``False``.
100 - Add a way to limit the depth of formatted exceptions traceback by setting the conventional ``sys.tracebacklimit`` variable (`#77 <https://github.com/Delgan/loguru/issues/77>`_).
101 - Add ``__repr__`` value to the ``logger`` for convenient debugging (`#84 <https://github.com/Delgan/loguru/issues/84>`_).
102 - Remove colors tags mixing directives (e.g. ``<red,blue>``) for simplification.
103 - Make the ``record["exception"]`` attribute unpackable as a ``(type, value, traceback)`` tuple.
104 - Fix error happening in some rare circumstances because ``frame.f_globals`` dict did not contain ``"__name__"`` key and hence prevented Loguru to retrieve the module's name. From now, ``record["name"]`` will be equal to ``None`` in such case (`#62 <https://github.com/Delgan/loguru/issues/62>`_).
105 - Fix logging methods not being serializable with ``pickle`` and hence raising exception while being passed to some ``multiprocessing`` functions (`#102 <https://github.com/Delgan/loguru/issues/102>`_).
106 - Fix exception stack trace not colorizing source code lines on Windows.
107 - Fix possible ``AttributeError`` while formatting exceptions within a ``celery`` task (`#52 <https://github.com/Delgan/loguru/issues/52>`_).
108 - Fix ``logger.catch`` decorator not working with generator and coroutine functions (`#75 <https://github.com/Delgan/loguru/issues/75>`_).
109 - Fix ``record["path"]`` case being normalized for no necessary reason (`#85 <https://github.com/Delgan/loguru/issues/85>`_).
110 - Fix some Windows terminal emulators (mintty) not correctly detected as supporting colors, causing ansi codes to be automatically stripped (`#104 <https://github.com/Delgan/loguru/issues/104>`_).
111 - Fix handler added with ``enqueue=True`` stopping working if exception was raised in sink although ``catch=True``.
112 - Fix thread-safety of ``enable()`` and ``disable()`` being called during logging.
113 - Use Tox to run tests (`#41 <https://github.com/Delgan/loguru/issues/41>`_).
114
115
116 `0.2.5`_ (2019-01-20)
117 =====================
118
119 - Modify behavior of sink option ``backtrace=False`` so it doesn't extend traceback upward automatically (`#30 <https://github.com/Delgan/loguru/issues/30>`_).
120 - Fix import error on some platforms using Python 3.5 with limited ``localtime()`` support (`#33 <https://github.com/Delgan/loguru/issues/33>`_).
121 - Fix incorrect time formatting of locale month using ``MMM`` and ``MMMM`` tokens (`#34 <https://github.com/Delgan/loguru/pull/34>`_, thanks `@nasyxx <https://github.com/nasyxx>`_).
122 - Fix race condition permitting writing on a stopped handler.
123
124
125 `0.2.4`_ (2018-12-26)
126 =====================
127
128 - Fix adding handler while logging which was not thread-safe (`#22 <https://github.com/Delgan/loguru/issues/22>`_).
129
130
131 `0.2.3`_ (2018-12-16)
132 =====================
133
134 - Add support for PyPy.
135 - Add support for Python 3.5.
136 - Fix incompatibility with ``awscli`` by downgrading required ``colorama`` dependency version (`#12 <https://github.com/Delgan/loguru/issues/12>`_).
137
138
139 `0.2.2`_ (2018-12-12)
140 =====================
141
142 - Deprecate ``logger.start()`` and ``logger.stop()`` methods in favor of ``logger.add()`` and ``logger.remove()`` (`#3 <https://github.com/Delgan/loguru/issues/3>`_).
143 - Fix ignored formatting while using ``logging.Handler`` sinks (`#4 <https://github.com/Delgan/loguru/issues/4>`_).
144 - Fix impossibility to set empty environment variable color on Windows (`#7 <https://github.com/Delgan/loguru/issues/7>`_).
145
146
147 `0.2.1`_ (2018-12-08)
148 =====================
149
150 - Fix typo preventing README to be correctly displayed on PyPI.
151
152
153 `0.2.0`_ (2018-12-08)
154 =====================
155
156 - Remove the ``parser`` and refactor it into the ``logger.parse()`` method.
157 - Remove the ``notifier`` and its dependencies (``pip install notifiers`` should be used instead).
158
159
160 `0.1.0`_ (2018-12-07)
161 =====================
162
163 - Add logger.
164 - Add notifier.
165 - Add parser.
166
167
168 `0.0.1`_ (2017-09-04)
169 =====================
170
171 Initial release.
172
173
174 .. _Unreleased: https://github.com/delgan/loguru/compare/0.5.3...master
175 .. _0.5.3: https://github.com/delgan/loguru/releases/tag/0.5.3
176 .. _0.5.2: https://github.com/delgan/loguru/releases/tag/0.5.2
177 .. _0.5.1: https://github.com/delgan/loguru/releases/tag/0.5.1
178 .. _0.5.0: https://github.com/delgan/loguru/releases/tag/0.5.0
179 .. _0.4.1: https://github.com/delgan/loguru/releases/tag/0.4.1
180 .. _0.4.0: https://github.com/delgan/loguru/releases/tag/0.4.0
181 .. _0.3.2: https://github.com/delgan/loguru/releases/tag/0.3.2
182 .. _0.3.1: https://github.com/delgan/loguru/releases/tag/0.3.1
183 .. _0.3.0: https://github.com/delgan/loguru/releases/tag/0.3.0
184 .. _0.2.5: https://github.com/delgan/loguru/releases/tag/0.2.5
185 .. _0.2.4: https://github.com/delgan/loguru/releases/tag/0.2.4
186 .. _0.2.3: https://github.com/delgan/loguru/releases/tag/0.2.3
187 .. _0.2.2: https://github.com/delgan/loguru/releases/tag/0.2.2
188 .. _0.2.1: https://github.com/delgan/loguru/releases/tag/0.2.1
189 .. _0.2.0: https://github.com/delgan/loguru/releases/tag/0.2.0
190 .. _0.1.0: https://github.com/delgan/loguru/releases/tag/0.1.0
191 .. _0.0.1: https://github.com/delgan/loguru/releases/tag/0.0.1
+0
-69
CONTRIBUTING.rst less more
0 Thank you for considering improving `Loguru`, any contribution is much welcome!
1
2 .. _minimal reproducible example: https://stackoverflow.com/help/mcve
3 .. _open a new issue: https://github.com/Delgan/loguru/issues/new
4 .. _open a pull request: https://github.com/Delgan/loguru/compare
5 .. _PEP 8: https://www.python.org/dev/peps/pep-0008/
6 .. _Loguru: https://github.com/Delgan/loguru
7
8 Asking questions
9 ----------------
10
11 If you have any question about `Loguru`, if you are seeking for help, or if you would like to suggest a new feature, you are encouraged to `open a new issue`_ so we can discuss it. Bringing new ideas and pointing out elements needing clarification allows to make this library always better!
12
13
14 Reporting a bug
15 ---------------
16
17 If you encountered an unexpected behavior using `Loguru`, please `open a new issue`_ and describe the problem you have spotted. Be as specific as possible in the description of the trouble so we can easily analyse it and quickly fix it.
18
19 An ideal bug report includes:
20
21 * The Python version you are using
22 * The `Loguru` version you are using (you can find it with ``print(loguru.__version__)``)
23 * Your operating system name and version (Linux, MacOS, Windows)
24 * Your development environment and local setup (IDE, Terminal, project context, any relevant information that could be useful)
25 * Some `minimal reproducible example`_
26
27
28 Implementing changes
29 --------------------
30
31 If you are willing to enhance `Loguru` by implementing non-trivial changes, please `open a new issue`_ first to keep a reference about why such modifications are made (and potentially avoid unneeded work). Then, the workflow would look as follows:
32
33 1. Fork the `Loguru`_ project from GitHub
34 2. Clone the repository locally::
35
36 $ git clone git@github.com:your_name_here/loguru.git
37 $ cd loguru
38
39 3. Activate your virtual environment::
40
41 $ python -m virtualenv env
42 $ source env/bin/activate
43
44 4. Create a new branch from ``master``::
45
46 $ git checkout master
47 $ git branch fix_bug
48 $ git checkout fix_bug
49
50 5. Install `Loguru` in development mode::
51
52 $ pip install -e .[dev]
53
54 6. Implement the modifications wished. During the process of development, honor `PEP 8`_ as much as possible.
55 7. Add unit tests (don't hesitate to be exhaustive!) and ensure none are failing using::
56
57 $ tox
58
59 8. Remember to update documentation if required
60 9. Update the ``CHANGELOG.rst`` file with what you improved
61 10. ``add`` and ``commit`` your changes, ``rebase`` your branch on ``master``, ``push`` your local project::
62
63 $ git add .
64 $ git commit -m 'Add succinct explanation of what changed'
65 $ git rebase master
66 $ git push origin fix_bug
67
68 11. Finally, `open a pull request`_ before getting it merged!
0 Metadata-Version: 2.1
1 Name: loguru
2 Version: 0.5.3
3 Summary: Python logging made (stupidly) simple
4 Home-page: https://github.com/Delgan/loguru
5 Author: Delgan
6 Author-email: delgan.py@gmail.com
7 License: MIT license
8 Download-URL: https://github.com/Delgan/loguru/archive/0.5.3.tar.gz
9 Project-URL: Changelog, https://github.com/Delgan/loguru/blob/master/CHANGELOG.rst
10 Project-URL: Documentation, https://loguru.readthedocs.io/en/stable/index.html
11 Description: .. raw:: html
12
13 <p align="center">
14 <a href="#readme">
15 <img alt="Loguru logo" src="https://raw.githubusercontent.com/Delgan/loguru/master/docs/_static/img/logo.png">
16 <!-- Logo credits: Sambeet from Pixaday -->
17 <!-- Logo fonts: Comfortaa + Raleway -->
18 </a>
19 </p>
20 <p align="center">
21 <a href="https://pypi.python.org/pypi/loguru"><img alt="Pypi version" src="https://img.shields.io/pypi/v/loguru.svg"></a>
22 <a href="https://pypi.python.org/pypi/loguru"><img alt="Python versions" src="https://img.shields.io/badge/python-3.5%2B%20%7C%20PyPy-blue.svg"></a>
23 <a href="https://loguru.readthedocs.io/en/stable/index.html"><img alt="Documentation" src="https://img.shields.io/readthedocs/loguru.svg"></a>
24 <a href="https://travis-ci.com/Delgan/loguru"><img alt="Build status" src="https://img.shields.io/travis/Delgan/loguru/master.svg"></a>
25 <a href="https://codecov.io/gh/delgan/loguru/branch/master"><img alt="Coverage" src="https://img.shields.io/codecov/c/github/delgan/loguru/master.svg"></a>
26 <a href="https://www.codacy.com/app/delgan-py/loguru/dashboard"><img alt="Code quality" src="https://img.shields.io/codacy/grade/4d97edb1bb734a0d9a684a700a84f555.svg"></a>
27 <a href="https://github.com/Delgan/loguru/blob/master/LICENSE"><img alt="License" src="https://img.shields.io/github/license/delgan/loguru.svg"></a>
28 </p>
29 <p align="center">
30 <a href="#readme">
31 <img alt="Loguru logo" src="https://raw.githubusercontent.com/Delgan/loguru/master/docs/_static/img/demo.gif">
32 </a>
33 </p>
34
35 =========
36
37 **Loguru** is a library which aims to bring enjoyable logging in Python.
38
39 Did you ever feel lazy about configuring a logger and used ``print()`` instead?... I did, yet logging is fundamental to every application and eases the process of debugging. Using **Loguru** you have no excuse not to use logging from the start, this is as simple as ``from loguru import logger``.
40
41 Also, this library is intended to make Python logging less painful by adding a bunch of useful functionalities that solve caveats of the standard loggers. Using logs in your application should be an automatism, **Loguru** tries to make it both pleasant and powerful.
42
43
44 .. end-of-readme-intro
45
46 Installation
47 ------------
48
49 ::
50
51 pip install loguru
52
53
54 Features
55 --------
56
57 * `Ready to use out of the box without boilerplate`_
58 * `No Handler, no Formatter, no Filter: one function to rule them all`_
59 * `Easier file logging with rotation / retention / compression`_
60 * `Modern string formatting using braces style`_
61 * `Exceptions catching within threads or main`_
62 * `Pretty logging with colors`_
63 * `Asynchronous, Thread-safe, Multiprocess-safe`_
64 * `Fully descriptive exceptions`_
65 * `Structured logging as needed`_
66 * `Lazy evaluation of expensive functions`_
67 * `Customizable levels`_
68 * `Better datetime handling`_
69 * `Suitable for scripts and libraries`_
70 * `Entirely compatible with standard logging`_
71 * `Personalizable defaults through environment variables`_
72 * `Convenient parser`_
73 * `Exhaustive notifier`_
74 * |strike| `10x faster than built-in logging`_ |/strike|
75
76 Take the tour
77 -------------
78
79 .. highlight:: python3
80
81 .. |logger| replace:: ``logger``
82 .. _logger: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger
83
84 .. |add| replace:: ``add()``
85 .. _add: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add
86
87 .. |remove| replace:: ``remove()``
88 .. _remove: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.remove
89
90 .. |complete| replace:: ``complete()``
91 .. _complete: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.complete
92
93 .. |catch| replace:: ``catch()``
94 .. _catch: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.catch
95
96 .. |bind| replace:: ``bind()``
97 .. _bind: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.bind
98
99 .. |contextualize| replace:: ``contextualize()``
100 .. _contextualize: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.contextualize
101
102 .. |patch| replace:: ``patch()``
103 .. _patch: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.patch
104
105 .. |opt| replace:: ``opt()``
106 .. _opt: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.opt
107
108 .. |trace| replace:: ``trace()``
109 .. _trace: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.trace
110
111 .. |success| replace:: ``success()``
112 .. _success: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.success
113
114 .. |level| replace:: ``level()``
115 .. _level: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.level
116
117 .. |configure| replace:: ``configure()``
118 .. _configure: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.configure
119
120 .. |disable| replace:: ``disable()``
121 .. _disable: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.disable
122
123 .. |enable| replace:: ``enable()``
124 .. _enable: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.enable
125
126 .. |parse| replace:: ``parse()``
127 .. _parse: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.parse
128
129 .. _sinks: https://loguru.readthedocs.io/en/stable/api/logger.html#sink
130 .. _record dict: https://loguru.readthedocs.io/en/stable/api/logger.html#record
131 .. _log messages: https://loguru.readthedocs.io/en/stable/api/logger.html#message
132 .. _easily configurable: https://loguru.readthedocs.io/en/stable/api/logger.html#file
133 .. _markup tags: https://loguru.readthedocs.io/en/stable/api/logger.html#color
134 .. _fixes it: https://loguru.readthedocs.io/en/stable/api/logger.html#time
135 .. _No problem: https://loguru.readthedocs.io/en/stable/api/logger.html#env
136 .. _logging levels: https://loguru.readthedocs.io/en/stable/api/logger.html#levels
137
138 .. |better_exceptions| replace:: ``better_exceptions``
139 .. _better_exceptions: https://github.com/Qix-/better-exceptions
140
141 .. |notifiers| replace:: ``notifiers``
142 .. _notifiers: https://github.com/notifiers/notifiers
143
144
145 Ready to use out of the box without boilerplate
146 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
147
148 The main concept of `Loguru` is that **there is one and only one** |logger|_.
149
150 For convenience, it is pre-configured and outputs to ``stderr`` to begin with (but that's entirely configurable).
151
152 ::
153
154 from loguru import logger
155
156 logger.debug("That's it, beautiful and simple logging!")
157
158 The |logger|_ is just an interface which dispatches log messages to configured handlers. Simple, right?
159
160
161 No Handler, no Formatter, no Filter: one function to rule them all
162 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
163
164 How to add a handler? How to set up logs formatting? How to filter messages? How to set level?
165
166 One answer: the |add|_ function.
167
168 ::
169
170 logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO")
171
172 This function should be used to register sinks_ which are responsible for managing `log messages`_ contextualized with a `record dict`_. A sink can take many forms: a simple function, a string path, a file-like object, a coroutine function or a built-in Handler.
173
174 Note that you may also |remove|_ a previously added handler by using the identifier returned while adding it. This is particularly useful if you want to supersede the default ``stderr`` handler: just call ``logger.remove()`` to make a fresh start.
175
176
177 Easier file logging with rotation / retention / compression
178 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
179
180 If you want to send logged messages to a file, you just have to use a string path as the sink. It can be automatically timed too for convenience::
181
182 logger.add("file_{time}.log")
183
184 It is also `easily configurable`_ if you need rotating logger, if you want to remove older logs, or if you wish to compress your files at closure.
185
186 ::
187
188 logger.add("file_1.log", rotation="500 MB") # Automatically rotate too big file
189 logger.add("file_2.log", rotation="12:00") # New file is created each day at noon
190 logger.add("file_3.log", rotation="1 week") # Once the file is too old, it's rotated
191
192 logger.add("file_X.log", retention="10 days") # Cleanup after some time
193
194 logger.add("file_Y.log", compression="zip") # Save some loved space
195
196
197 Modern string formatting using braces style
198 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
199
200 `Loguru` favors the much more elegant and powerful ``{}`` formatting over ``%``, logging functions are actually equivalent to ``str.format()``.
201
202 ::
203
204 logger.info("If you're using Python {}, prefer {feature} of course!", 3.6, feature="f-strings")
205
206
207 Exceptions catching within threads or main
208 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
209
210 Have you ever seen your program crashing unexpectedly without seeing anything in the log file? Did you ever noticed that exceptions occurring in threads were not logged? This can be solved using the |catch|_ decorator / context manager which ensures that any error is correctly propagated to the |logger|_.
211
212 ::
213
214 @logger.catch
215 def my_function(x, y, z):
216 # An error? It's caught anyway!
217 return 1 / (x + y + z)
218
219
220 Pretty logging with colors
221 ^^^^^^^^^^^^^^^^^^^^^^^^^^
222
223 `Loguru` automatically adds colors to your logs if your terminal is compatible. You can define your favorite style by using `markup tags`_ in the sink format.
224
225 ::
226
227 logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")
228
229
230 Asynchronous, Thread-safe, Multiprocess-safe
231 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
232
233 All sinks added to the |logger|_ are thread-safe by default. They are not multiprocess-safe, but you can ``enqueue`` the messages to ensure logs integrity. This same argument can also be used if you want async logging.
234
235 ::
236
237 logger.add("somefile.log", enqueue=True)
238
239 Coroutine functions used as sinks are also supported and should be awaited with |complete|_.
240
241
242 Fully descriptive exceptions
243 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
244
245 Logging exceptions that occur in your code is important to track bugs, but it's quite useless if you don't know why it failed. `Loguru` helps you identify problems by allowing the entire stack trace to be displayed, including values of variables (thanks |better_exceptions|_ for this!).
246
247 The code::
248
249 logger.add("out.log", backtrace=True, diagnose=True) # Caution, may leak sensitive data in prod
250
251 def func(a, b):
252 return a / b
253
254 def nested(c):
255 try:
256 func(5, c)
257 except ZeroDivisionError:
258 logger.exception("What?!")
259
260 nested(0)
261
262 Would result in:
263
264 .. code-block:: none
265
266 2018-07-17 01:38:43.975 | ERROR | __main__:nested:10 - What?!
267 Traceback (most recent call last):
268
269 File "test.py", line 12, in <module>
270 nested(0)
271 └ <function nested at 0x7f5c755322f0>
272
273 > File "test.py", line 8, in nested
274 func(5, c)
275 │ └ 0
276 └ <function func at 0x7f5c79fc2e18>
277
278 File "test.py", line 4, in func
279 return a / b
280 │ └ 0
281 └ 5
282
283 ZeroDivisionError: division by zero
284
285
286 Structured logging as needed
287 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
288
289 Want your logs to be serialized for easier parsing or to pass them around? Using the ``serialize`` argument, each log message will be converted to a JSON string before being sent to the configured sink.
290
291 ::
292
293 logger.add(custom_sink_function, serialize=True)
294
295 Using |bind|_ you can contextualize your logger messages by modifying the `extra` record attribute.
296
297 ::
298
299 logger.add("file.log", format="{extra[ip]} {extra[user]} {message}")
300 context_logger = logger.bind(ip="192.168.0.1", user="someone")
301 context_logger.info("Contextualize your logger easily")
302 context_logger.bind(user="someone_else").info("Inline binding of extra attribute")
303 context_logger.info("Use kwargs to add context during formatting: {user}", user="anybody")
304
305 It is possible to modify a context-local state temporarily with |contextualize|_:
306
307 ::
308
309 with logger.contextualize(task=task_id):
310 do_something()
311 logger.info("End of task")
312
313 You can also have more fine-grained control over your logs by combining |bind|_ and ``filter``:
314
315 ::
316
317 logger.add("special.log", filter=lambda record: "special" in record["extra"])
318 logger.debug("This message is not logged to the file")
319 logger.bind(special=True).info("This message, though, is logged to the file!")
320
321 Finally, the |patch|_ method allows dynamic values to be attached to the record dict of each new message:
322
323 ::
324
325 logger.add(sys.stderr, format="{extra[utc]} {message}")
326 logger = logger.patch(lambda record: record["extra"].update(utc=datetime.utcnow()))
327
328
329 Lazy evaluation of expensive functions
330 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
331
332 Sometime you would like to log verbose information without performance penalty in production, you can use the |opt|_ method to achieve this.
333
334 ::
335
336 logger.opt(lazy=True).debug("If sink level <= DEBUG: {x}", x=lambda: expensive_function(2**64))
337
338 # By the way, "opt()" serves many usages
339 logger.opt(exception=True).info("Error stacktrace added to the log message (tuple accepted too)")
340 logger.opt(colors=True).info("Per message <blue>colors</blue>")
341 logger.opt(record=True).info("Display values from the record (eg. {record[thread]})")
342 logger.opt(raw=True).info("Bypass sink formatting\n")
343 logger.opt(depth=1).info("Use parent stack context (useful within wrapped functions)")
344 logger.opt(capture=False).info("Keyword arguments not added to {dest} dict", dest="extra")
345
346
347 Customizable levels
348 ^^^^^^^^^^^^^^^^^^^
349
350 `Loguru` comes with all standard `logging levels`_ to which |trace|_ and |success|_ are added. Do you need more? Then, just create it by using the |level|_ function.
351
352 ::
353
354 new_level = logger.level("SNAKY", no=38, color="<yellow>", icon="🐍")
355
356 logger.log("SNAKY", "Here we go!")
357
358
359 Better datetime handling
360 ^^^^^^^^^^^^^^^^^^^^^^^^
361
362 The standard logging is bloated with arguments like ``datefmt`` or ``msecs``, ``%(asctime)s`` and ``%(created)s``, naive datetimes without timezone information, not intuitive formatting, etc. `Loguru` `fixes it`_:
363
364 ::
365
366 logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}")
367
368
369 Suitable for scripts and libraries
370 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
371
372 Using the logger in your scripts is easy, and you can |configure|_ it at start. To use `Loguru` from inside a library, remember to never call |add|_ but use |disable|_ instead so logging functions become no-op. If a developer wishes to see your library's logs, he can |enable|_ it again.
373
374 ::
375
376 # For scripts
377 config = {
378 "handlers": [
379 {"sink": sys.stdout, "format": "{time} - {message}"},
380 {"sink": "file.log", "serialize": True},
381 ],
382 "extra": {"user": "someone"}
383 }
384 logger.configure(**config)
385
386 # For libraries
387 logger.disable("my_library")
388 logger.info("No matter added sinks, this message is not displayed")
389 logger.enable("my_library")
390 logger.info("This message however is propagated to the sinks")
391
392
393 Entirely compatible with standard logging
394 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
395
396 Wish to use built-in logging ``Handler`` as a `Loguru` sink?
397
398 ::
399
400 handler = logging.handlers.SysLogHandler(address=('localhost', 514))
401 logger.add(handler)
402
403 Need to propagate `Loguru` messages to standard `logging`?
404
405 ::
406
407 class PropagateHandler(logging.Handler):
408 def emit(self, record):
409 logging.getLogger(record.name).handle(record)
410
411 logger.add(PropagateHandler(), format="{message}")
412
413 Want to intercept standard `logging` messages toward your `Loguru` sinks?
414
415 ::
416
417 class InterceptHandler(logging.Handler):
418 def emit(self, record):
419 # Get corresponding Loguru level if it exists
420 try:
421 level = logger.level(record.levelname).name
422 except ValueError:
423 level = record.levelno
424
425 # Find caller from where originated the logged message
426 frame, depth = logging.currentframe(), 2
427 while frame.f_code.co_filename == logging.__file__:
428 frame = frame.f_back
429 depth += 1
430
431 logger.opt(depth=depth, exception=record.exc_info).log(level, record.getMessage())
432
433 logging.basicConfig(handlers=[InterceptHandler()], level=0)
434
435
436 Personalizable defaults through environment variables
437 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
438
439 Don't like the default logger formatting? Would prefer another ``DEBUG`` color? `No problem`_::
440
441 # Linux / OSX
442 export LOGURU_FORMAT="{time} | <lvl>{message}</lvl>"
443
444 # Windows
445 setx LOGURU_DEBUG_COLOR "<green>"
446
447
448 Convenient parser
449 ^^^^^^^^^^^^^^^^^
450
451 It is often useful to extract specific information from generated logs, this is why `Loguru` provides a |parse|_ method which helps to deal with logs and regexes.
452
453 ::
454
455 pattern = r"(?P<time>.*) - (?P<level>[0-9]+) - (?P<message>.*)" # Regex with named groups
456 caster_dict = dict(time=dateutil.parser.parse, level=int) # Transform matching groups
457
458 for groups in logger.parse("file.log", pattern, cast=caster_dict):
459 print("Parsed:", groups)
460 # {"level": 30, "message": "Log example", "time": datetime(2018, 12, 09, 11, 23, 55)}
461
462
463 Exhaustive notifier
464 ^^^^^^^^^^^^^^^^^^^
465
466 `Loguru` can easily be combined with the great |notifiers|_ library (must be installed separately) to receive an e-mail when your program fail unexpectedly or to send many other kind of notifications.
467
468 ::
469
470 import notifiers
471
472 params = {
473 "username": "you@gmail.com",
474 "password": "abc123",
475 "to": "dest@gmail.com"
476 }
477
478 # Send a single notification
479 notifier = notifiers.get_notifier("gmail")
480 notifier.notify(message="The application is running!", **params)
481
482 # Be alerted on each error message
483 from notifiers.logging import NotificationHandler
484
485 handler = NotificationHandler("gmail", defaults=params)
486 logger.add(handler, level="ERROR")
487
488
489 |strike|
490
491 10x faster than built-in logging
492 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
493
494 |/strike|
495
496 Although logging impact on performances is in most cases negligible, a zero-cost logger would allow to use it anywhere without much concern. In an upcoming release, Loguru's critical functions will be implemented in C for maximum speed.
497
498
499 .. |strike| raw:: html
500
501 <strike>
502
503 .. |/strike| raw:: html
504
505 </strike>
506
507 .. end-of-readme-usage
508
509
510 Documentation
511 -------------
512
513 * `API Reference <https://loguru.readthedocs.io/en/stable/api/logger.html>`_
514 * `Help & Guides <https://loguru.readthedocs.io/en/stable/resources.html>`_
515 * `Type hints <https://loguru.readthedocs.io/en/stable/api/type_hints.html>`_
516 * `Contributing <https://loguru.readthedocs.io/en/stable/project/contributing.html>`_
517 * `License <https://loguru.readthedocs.io/en/stable/project/license.html>`_
518 * `Changelog <https://loguru.readthedocs.io/en/stable/project/changelog.html>`_
519
520 Keywords: loguru,logging,logger,log
521 Platform: UNKNOWN
522 Classifier: Development Status :: 5 - Production/Stable
523 Classifier: Topic :: System :: Logging
524 Classifier: Intended Audience :: Developers
525 Classifier: Natural Language :: English
526 Classifier: License :: OSI Approved :: MIT License
527 Classifier: Operating System :: OS Independent
528 Classifier: Programming Language :: Python
529 Classifier: Programming Language :: Python :: 3
530 Classifier: Programming Language :: Python :: 3.5
531 Classifier: Programming Language :: Python :: 3.6
532 Classifier: Programming Language :: Python :: 3.7
533 Classifier: Programming Language :: Python :: 3.8
534 Classifier: Programming Language :: Python :: 3.9
535 Classifier: Programming Language :: Python :: 3 :: Only
536 Classifier: Programming Language :: Python :: Implementation :: PyPy
537 Classifier: Programming Language :: Python :: Implementation :: CPython
538 Requires-Python: >=3.5
539 Description-Content-Type: text/x-rst
540 Provides-Extra: dev
0 loguru (0.5.3+git20210319.1.6861648-1) UNRELEASED; urgency=low
1
2 * New upstream snapshot.
3
4 -- Debian Janitor <janitor@jelmer.uk> Mon, 07 Jun 2021 23:49:21 -0000
5
06 loguru (0.5.3-3) unstable; urgency=medium
17
28 * Team Upload.
+0
-20
docs/Makefile less more
0 # Minimal makefile for Sphinx documentation
1 #
2
3 # You can set these variables from the command line.
4 SPHINXOPTS =
5 SPHINXBUILD = sphinx-build
6 SPHINXPROJ = loguru
7 SOURCEDIR = .
8 BUILDDIR = _build
9
10 # Put it first so that "make" without argument is like "make help".
11 help:
12 @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
13
14 .PHONY: help Makefile
15
16 # Catch-all target: route all unknown targets to Sphinx using the new
17 # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
18 %: Makefile
19 @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+0
-40
docs/_extensions/autodoc_stub_file.py less more
0 """
1 Small Sphinx extension intended to generate documentation for stub files.
2
3 It retrieves only the docstrings of "loguru/__init__.pyi", hence avoiding possible errors (caused by
4 missing imports or forward references). The stub file is loaded as a dummy module which contains
5 only the top-level docstring. All the formatting can therefore be handled by the "autodoc"
6 extension, which permits cross-reference.
7
8 The docstring of the stub file should list the available type hints and add short explanation of
9 their usage.
10
11 Warning: for some reason, the docs NEEDS to be re-generated for changes in the stub file to be taken
12 into account: ``make clean && make html``.
13 """
14 import os
15 import sys
16 import types
17 import code
18
19
20 def get_module_docstring(filepath):
21 with open(filepath) as file:
22 source = file.read()
23
24 co = compile(source, filepath, "exec")
25
26 if co.co_consts and isinstance(co.co_consts[0], str):
27 docstring = co.co_consts[0]
28 else:
29 docstring = None
30
31 return docstring
32
33
34 def setup(app):
35 module_name = "autodoc_stub_file.loguru"
36 stub_path = os.path.join("..", "loguru", "__init__.pyi")
37 docstring = get_module_docstring(stub_path)
38 module = types.ModuleType(module_name, docstring)
39 sys.modules[module_name] = module
+0
-3
docs/_static/css/loguru.css less more
0 .wy-nav-content {
1 padding: 2.05em;
2 }
docs/_static/img/demo.gif less more
Binary diff not shown
docs/_static/img/logo.png less more
Binary diff not shown
+0
-84
docs/_static/img/logo.svg less more
0 <svg width="879.9999999999999" height="260" xmlns="http://www.w3.org/2000/svg">
1 <defs>
2 <style>@import url(https://fonts.googleapis.com/css?family=Comfortaa:300,400,700|Raleway:100,200,300,500,600,700,800,900,100italic,200italic,300italic,400,400italic,500italic,600italic,700italic,800italic,900italic);</style>
3 </defs>
4 <g>
5 <title>background</title>
6 <rect fill="none" id="canvas_background" height="262" width="882" y="-1" x="-1"/>
7 </g>
8 <g>
9 <title>Layer 1</title>
10 <rect transform="rotate(45.6655, -1132.78, 1656.73)" fill=" white" height="980" width="1400" y="864.51874" x="-1261.694519" id="ee-background"/>
11 <g id="svg_1" transform="matrix(0.138616, 0, 0, 0.138616, 449.247, 382.571)">
12 <g id="svg_2">
13 <path id="svg_3" d="m-2294.354248,-2682.489014c16.5,-20.419922 41.639893,-33.98999 68,-35.169922c14.619873,-0.72998 29.22998,3.679932 41.389893,11.719971c14.72998,9.340088 25.290039,23.459961 37.209961,35.860107c-0.579834,1.149902 -1.149902,2.299805 -1.709961,3.449951c-2.639893,-1.959961 -5.059814,-4.169922 -7.429932,-6.429932c-12.459961,-11.900146 -25.449951,-24.290039 -42.059814,-30.050049c-13.490234,-4.920166 -28.670166,-4.01001 -41.950195,1.159912c7.530029,0.400146 15.110107,0.900146 22.410156,2.900146c20.159912,5.109863 37.969971,17.619873 50.939941,33.709961c14.76001,18.27002 23.560059,41.290039 24.649902,64.76001c0.370117,3.22998 0.140137,6.799805 1.75,9.719971c6.060059,6.929932 13.640137,13.310059 22.919922,15.139893c4.180176,0.860107 9.76001,0.72998 12.240234,-3.369873c3.599854,-6.170166 3.169922,-13.630127 3.829834,-20.5c0.800049,-8.719971 0.98999,-18.330078 6.679932,-25.530029c0.880127,0.869873 1.77002,1.73999 2.670166,2.609863c-4.219971,8.76001 -2.209961,18.72998 -1.790039,28.040039c0.580078,8.620117 0.889893,18.570068 -5.350098,25.390137c-5.189941,5.879883 -13.5,6.649902 -20.829834,6.98999c7.329834,3.349854 15.379883,5.219971 23.469971,4.800049c13.139893,-0.470215 25.719971,-5.450195 38.919922,-5.280029c10.040039,0.379883 19.920044,-2.02002 29.960083,-1.960205c23.419922,-0.72998 48.23999,3.290039 67.359985,17.720215c13.47998,10.539795 25.040039,24.52002 29.780029,41.219971c5.01001,16.23999 4.469971,34.069824 12.390015,49.399902c4.679932,9.439941 15.079956,14.439941 25.099976,15.870117c9.959961,1.389893 21.030029,-0.160156 29,-6.72998c7.650024,-6.180176 9.26001,-17.730225 5.469971,-26.460205c-3.319946,-7.299805 -12.839966,-9.72998 -19.910034,-6.839844c-4.049927,1.319824 -6.890015,4.649902 -9.359985,7.939941c0.330078,-2.909912 2.180054,-5.26001 4.369995,-7.070068c7.910034,-6.829834 21.830078,-6.040039 27.650024,3.120117c6.119995,10.179932 5.119995,24.649902 -3.349976,33.26001c-6.109985,6.369873 -14.72998,9.73999 -23.339966,10.98999c-12.51001,1.709961 -25.960083,-0.659912 -36.26001,-8.219971c-8.210083,-6.070068 -12.850098,-15.650146 -16.100098,-25.070068c-5.409912,-15.110107 -6.399902,-31.949951 -15.269897,-45.689941c-9.320068,-13.640137 -23.320068,-24.550049 -39.570068,-28.370117c6.060059,5.22998 12,10.650146 16.969971,16.969971c13.790039,16.890137 22.26001,38.100098 23.77002,59.870117c0.430054,7.149902 2.420044,14.219971 5.969971,20.449951c7.119995,12.610107 19.790039,21.52002 33.590088,25.469971c11.51001,3.180176 23.289917,5.27002 34.76001,8.620117c15.539917,4.689941 30.719971,11.139893 44.01001,20.549805c10.5,7.350098 19.709961,16.740234 25.959961,27.97998c10.97998,18.970215 16.369995,40.530273 19.939941,61.990234c3.170044,17.649902 2.98999,36.02002 9.200073,53.040039c2.01001,5.389893 4.849976,10.939941 9.939941,13.98999c4.430054,2.629883 10.47998,1.699951 13.97998,-2.060059c5.51001,-5.199951 6.970093,-12.919922 10.190063,-19.47998c-1.200073,7.589844 -3.349976,15.449951 -8.339966,21.47998c-4.850098,5.820068 -14.030029,6.560059 -20.119995,2.320068c-6.790039,-4.600098 -10.369995,-12.420166 -13.220093,-19.830078c-2.47998,-6.090088 -3.52002,-12.630127 -5.73999,-18.790039c-0.469971,5.080078 -0.549927,10.179932 -1.25,15.22998c-3.439941,25.890137 -8.01001,51.870117 -6.869995,78.090088c0.560059,7.290039 1.349976,14.879883 4.859985,21.429932c2.160034,4.169922 6.790039,7.130127 11.600098,6.27002c8.539917,-1.149902 15.359985,-6.929932 22.23999,-11.639893c-5.140015,5.699951 -11.330078,10.689941 -18.390015,13.769775c-5.380005,2.280029 -12.090088,1.840088 -16.48999,-2.23999c-5.960083,-5.439941 -8.280029,-13.549805 -10.090088,-21.129883c-3.059937,-14.350098 -3.559937,-29.100098 -3.689941,-43.719971c-6.380005,12.27002 -13.550049,24.109863 -21.570068,35.369873c-4.98999,7.280029 -10.25,14.72998 -12.509888,23.390137c-1.090088,3.859863 0.029907,8.169922 3.109985,10.800049c5.5,4.899902 12.689941,7.219971 19.569946,9.449951c14.199951,4.25 28.599976,8.079834 42.22998,14.01001c11.51001,5.149902 22.940063,11.969971 30.180054,22.589844c6.789917,9.950195 7.859985,22.650146 6.140015,34.290039c-0.26001,2.52002 -1.26001,5.199951 -0.02002,7.620117c2.75,6.359985 4.75,13.050049 5.73999,19.910034c2.869995,19.97998 -0.640015,40.189941 -5.640015,59.540039l1.890015,-0.23999c-0.719971,0.369873 -1.420044,0.76001 -2.109985,1.149902c-6.75,24.98999 -16.119995,49.209961 -22.200073,74.380005c-4.47998,18.430054 -6.359985,38.25 -0.279907,56.550049c2.299927,0.759888 4.589966,1.579956 6.929932,2.319946c-0.549927,0.090088 -1.630005,0.280029 -2.179932,0.370117c0.939941,0.469971 1.899902,0.959961 2.880005,1.459961c-1.440063,0.309937 -2.870117,0.619873 -4.27002,0.929932c-0.400024,-0.070068 -1.190063,-0.199951 -1.590088,-0.27002c0.460083,1.01001 0.920044,2.02002 1.420044,3.060059c-0.369995,0.550049 -1.119995,1.659912 -1.48999,2.219971c-1.180054,-2.080078 -2.219971,-4.209961 -3.22998,-6.349976c-4.550049,-2.170044 -9.089966,-4.569946 -12.710083,-8.130005c-7.299927,-6.949951 -11.329956,-17.050049 -11,-27.100098c-0.219971,-10.019897 4.120117,-19.23999 7.700073,-28.349854c3.329956,-9.050049 6.670044,-18.210083 8.23999,-27.76001c-5.579956,13.790039 -13.25,26.75 -22.76001,38.189941c-5.619995,6.310059 -8.410034,14.689941 -9.349976,22.969971c-1.869995,17.060059 6.76001,34.670044 21.26001,43.800049c9.219971,6.189941 20.569946,7.130005 30.859985,10.689941c12.929932,1.77002 25.75,5.150024 37.339966,11.290039c16.670044,8.47998 30.690063,22.5 38.130005,39.77002c4.469971,9.339966 5.660034,19.73999 8.930054,29.48999c2.900024,9.199951 0.929932,18.98999 3.22998,28.280029c-0.390015,0.5 -1.170044,1.47998 -1.560059,1.969971c-0.139893,-0.48999 -0.439941,-1.459961 -0.589966,-1.949951c-3.549927,17.419922 -9.780029,34.189941 -12.76001,51.73999c-1.619995,9.829956 -2.059937,20.119995 0.820068,29.77002c2.579956,7.47998 8,13.569946 13.76001,18.829956c7.149902,6.349976 15.579956,11.469971 24.880005,13.959961c6.949951,1.830078 14.879883,1.589966 20.949951,-2.660034c6.459961,-3.899902 10.209961,-11.079956 11.130005,-18.419922c0.869995,0.869995 1.76001,1.75 2.670044,2.650024c-1.01001,8.859985 -6.450073,17.089966 -14.440063,21.149902c-7.75,4.540039 -17.290039,4.180054 -25.670044,1.780029c-12.029907,-3.47998 -23.019897,-10.309937 -31.829956,-19.160034c-5.309937,-5.299927 -9.76001,-11.659912 -11.72998,-18.959961c-4.070068,-13.359985 -3.150024,-27.540039 -1.380005,-41.199951c-3.349976,6.179932 -8.52002,11.359985 -10.579956,18.209961c-2.840088,8.640015 -3.320068,17.920044 -2.690063,26.940063c1.449951,19.289917 11.670044,37.719971 27.329956,49.099976c14.080078,9.469971 28.150024,19.01001 41.390015,29.659912c13.410034,10.800049 26.76001,22.160034 36.52002,36.51001c10.22998,14.73999 16.780029,32.580078 15.700073,50.700073c-0.860107,14.26001 -5.660034,29.130005 -16.660034,38.829956c-14.050049,12.72998 -34.859985,15.719971 -52.830078,11.170044c-16.47998,-4.089966 -30.98999,-16.580078 -35.98999,-33.01001c-4.109985,-13.190063 -1.140015,-27.070068 0.430054,-40.400024c2.949951,6.48999 5.280029,13.23999 8.049927,19.820068c3.040039,7.039917 7.400024,13.969971 14.170044,17.949951c10.200073,5.859985 24.209961,4.050049 32.550049,-4.26001c5.97998,-5.97998 7.319946,-15.089966 6.169922,-23.150024c-2.199951,-15.549927 -10.539917,-29.76001 -21.649902,-40.660034c-12.450073,-12.949951 -27.660034,-23.099976 -38.880005,-37.25c-10.5,-13.009888 -20.5,-27.089966 -35.030029,-35.939941c-2.080078,-1.829956 -3.469971,-4.22998 -4.359985,-6.800049c-10.01001,-25.72998 -24.810059,-49.809937 -44.680054,-69.099976c-9.339966,-9.890015 -20.630005,-17.609985 -31.949951,-25c-16.160034,-9.189941 -33.01001,-17.180054 -50.440063,-23.640015c-28.919922,-10.949951 -58.880005,-19.139893 -87.089966,-31.939941c-16.23999,-7.910034 -32.179932,-16.570068 -46.900024,-27.080078c-9.02002,-6.879883 -18.059937,-13.809937 -26.130005,-21.789917c-9.800049,-9.349976 -18.050049,-20.150024 -26.079956,-31.01001c-11.490112,-17.900024 -21.280151,-37.030029 -27.579956,-57.400024c-3.070068,-8.800049 -3.790039,-18.149902 -4.560059,-27.359985c-0.419922,-10.319946 1.469971,-20.559937 3.51001,-30.619995c1.659912,-6.350098 4.040039,-12.47998 6.02002,-18.72998c7.869873,-18.810059 18.130005,-36.560059 29.719971,-53.320068c2.72998,-4.109985 6.030029,-7.909912 7.869995,-12.540039c-3.72998,2.100098 -5.269897,6.350098 -8.089966,9.370117c-4.920044,5.5 -8.590088,11.929932 -12.98999,17.839966c-12.199951,18.089966 -22.890137,37.589966 -28.130127,58.930054c-2.5,8.459961 -2.959961,17.319946 -3.699951,26.059937c0.449951,12.119995 1.890137,24.339966 5.969971,35.839966c2.840088,7.640015 5.870117,15.209961 9.320068,22.600098c2.97998,7.559937 7.679932,14.23999 11.790039,21.219971c5.02002,7.540039 9.939941,15.22998 16.290039,21.76001c24.73999,29.169922 56.969971,51.099976 91.139893,67.819946c11.200073,5.890015 22.890015,10.720093 34.650024,15.359985c7.940063,2.400024 15.349976,6.219971 23.209961,8.860107c12.52002,4.639893 25.080078,9.209961 37.27002,14.659912c7.200073,3.040039 14.630005,5.640015 21.440063,9.540039c9.559937,5.329956 19.549927,10.050049 28.319946,16.689941c22.5,16.030029 40.890015,37.469971 54.440063,61.47998c2.779907,6.160034 6.709961,11.75 9.089966,18.110107c3.719971,9.449951 7.97998,18.75 10.319946,28.679932c2.430054,8.329956 4.670044,16.77002 5.52002,25.440063c2.170044,18.5 2.530029,37.529907 -2.339966,55.659912c-1.719971,7.710083 -4.560059,15.099976 -7.719971,22.320068c-1.98999,4.52002 -5.220093,8.400024 -6.900024,13.079956c3.189941,-2.650024 4.890015,-6.530029 7.069946,-9.959961c9,-14.810059 13.200073,-31.98999 15.23999,-49.050049c2.610107,-25.650024 -1.599976,-51.640015 -10.309937,-75.809937c0.599976,0.130005 1.790039,0.369995 2.390015,0.5c10.859985,11.72998 16.77002,27.219971 19.809937,42.709961c2.600098,16.579956 0,33.599976 -4.76001,49.559937c-5.079956,16.52002 -13.27002,32.01001 -23.679932,45.780029c-10.210083,13.72998 -21.340088,27.440063 -26.52002,44.02002c-2.849976,9.640015 -3.72998,20.599976 0.809937,29.880005c3.650024,7.660034 11.630005,12.660034 19.970093,13.530029c12.069946,1.390015 24.309937,-3.839966 32.719971,-12.390015c4.359985,-4.430054 8.609985,-9.630005 9.550049,-15.959961c0.589966,-3.570068 -1.690063,-6.570068 -3.530029,-9.340088c12.049927,7.820068 23.140015,17.920044 29.76001,30.859985c3.709961,7.380005 5.169922,16.350098 2,24.190063c-3.310059,8.079956 -10.410034,13.910034 -17.940063,17.949951c-8.72998,4.780029 -18.809937,6.580078 -28.679932,6.650024c-9.150024,-0.349976 -18.470093,-1.459961 -26.950073,-5.109985c-8.119995,-3.640015 -15.809937,-8.150024 -23.5,-12.589966c-12.579956,-7.530029 -23.549927,-18.619995 -28.640015,-32.570068c-4.529907,-12.109985 -3.97998,-25.709961 -0.049927,-37.900024c5.880005,-19.609985 16.400024,-37.409912 22.579956,-56.909912c2.940063,-9.780029 5.390015,-20.030029 4.190063,-30.300049c-1.110107,-10.290039 -6.030029,-19.859985 -12.76001,-27.589966c-7.48999,-8.540039 -16.080078,-16.119995 -22.700073,-25.410034c6.900024,17.150024 12.090088,35.430054 11.320068,54.080078c-0.51001,11.98999 -3.190063,23.829956 -7.359985,35.069946c-7.970093,20.880005 -12.460083,43.51001 -9.950073,65.890015c1.869995,16.25 8.330078,32.319946 19.930054,44.069946c5.799927,6.080078 12.789917,10.869995 20.169922,14.830078c8.570068,4.589966 17.550049,8.649902 27.100098,10.689941c-3.170044,0.52002 -6.360107,-0.150024 -9.470093,-0.640015c-22.25,-3.589966 -44.719971,-11.579956 -61.199951,-27.5c-13.630005,-12.909912 -21.690063,-30.859985 -24.469971,-49.26001c-1.420044,-10.01001 -2.359985,-20.289917 -0.390015,-30.279907c2.349976,-14.51001 5.939941,-29.119995 4.549927,-43.910034c-0.679932,-5.73999 -2.599976,-12.430054 -8.299927,-15.02002c-19.48999,-8.810059 -38.070068,-20.51001 -52.349976,-36.619995c-11.800049,-13.180054 -20.150024,-29.619995 -22.800049,-47.180054c-3,-19.75 -0.410034,-40.589966 8.77002,-58.449951c3.140015,-6.589966 7.329956,-12.599976 11.22998,-18.75c3.450073,-7.829956 -0.319946,-18.059937 -7.929932,-21.959961c-5.190063,-2.959961 -11.340088,-2.560059 -17.060059,-3.320068c-7.910034,-0.97998 -15.52002,-4.659912 -20.910034,-10.569946c-6.779907,-7.380005 -11.390015,-16.450073 -18.26001,-23.75c-5.679932,-6.349976 -12.909912,-11.030029 -20.469971,-14.819946c7.150024,19.119873 12.339966,39.079956 14.150024,59.459961c1.829956,15.309937 0.290039,30.72998 0.309937,46.089966c0.370117,9.040039 0.5,18.790039 5.680054,26.599976c6.449951,10.109985 14.550049,19.26001 19.170044,30.450073c6.899902,15.539917 5.349976,33.809937 -1.450073,49.099976c-6.98999,15.599976 -19.569946,27.849976 -32.949951,38.099976c-13.570068,10.540039 -28.52002,19.180054 -41.820068,30.079956c-9.489868,7.73999 -16.640015,17.910034 -22.469971,28.590088c-8.219971,15.299927 -13.930054,31.959961 -16.730103,49.109985c-2.539795,16.390015 -2.609863,34.01001 4.620117,49.309937c4.080078,8.940063 11.300049,16.350098 20.090088,20.76001c-0.100098,0.859985 -0.300049,2.580078 -0.400146,3.450073c-15.039917,-4.980103 -26.129883,-18.02002 -31.300049,-32.680054c-7.530029,-21.400024 -6.419922,-44.77002 -2.289795,-66.76001c-1.480225,1.880005 -2.990234,3.72998 -4.460205,5.609985c-0.659912,-3.630005 2.469971,-6.23999 4.150146,-9.079956c10.300049,-15.670044 20.030029,-31.940063 26.389893,-49.650024c5.720093,-17.849976 7.730103,-37.619995 1.700073,-55.650024c-5.640015,-17.819946 -17.410034,-32.699951 -28.819946,-47.159912c-5.590088,-7.410034 -11.77002,-14.360107 -17.050049,-22c-12.459961,-16.840088 -19.719971,-37.320068 -21.689941,-58.120117c-1.300049,-8.299927 -1.280029,-16.699951 -1.850098,-25.039917c-0.959961,-15.119995 1.709961,-30.220093 0.47998,-45.329956c-1.820068,4.189941 -1.580078,8.809937 -2.040039,13.27002c-2.5,23.849854 -4.409912,48.219971 0.530029,71.909912c1.23999,8.150024 4.280029,15.849976 7.280029,23.48999c3.530029,8.839966 9.399902,16.440063 15.26001,23.859985c12.139893,14.969971 25.27002,29.380005 34.399902,46.5c4.760132,8.47998 7.940186,17.810059 10.020142,27.280029c4.599976,22.849976 -1.700073,46.459961 -12.510132,66.650024c-3.049805,6.72998 -7.079834,12.919922 -10.76001,19.299927c-5.98999,9.130005 -11.069824,18.810059 -16.549805,28.25c-8.25,16.440063 -15.26001,34.180054 -15.470215,52.810059c-0.089844,4.709961 -0.369873,9.48999 0.690186,14.140015c1.149902,-9.380005 0.919922,-18.959961 3.300049,-28.160034c1.119873,-4.199951 1.569824,-8.929932 4.709961,-12.219971c-4.030029,16.469971 1.349854,33.030029 4.359863,49.169922c2.22998,11.780029 3.920166,24.300049 -0.119873,35.890015c-2.830078,8.280029 -8.850098,15.180054 -16.130127,19.900024c-8.649902,5.820068 -18.959961,8.219971 -28.790039,11.27002c0.810059,8 1.390137,16.180054 -0.299805,24.130005c-1.950195,9.140015 -5.300049,18.089966 -10.540039,25.890015c-7.860107,11.929932 -19.780029,20.669922 -32.810059,26.25c-20.959961,8.949951 -43.839844,11.48999 -66.120117,15.23999c-19.579834,3.280029 -39.929932,6.75 -56.879883,17.73999c-11.819824,7.48999 -20.810059,19.170044 -24.889893,32.569946c-0.420166,0.48999 -1.26001,1.470093 -1.679932,1.950073c-0.52002,-0.680054 -1.02002,-1.359985 -1.490234,-2.02002c1.840088,-7.800049 5.340088,-15.170044 9.970215,-21.680054c3.739746,-5.529907 9.02002,-9.649902 13.819824,-14.179932c-12.080078,10.059937 -23.879883,20.449951 -35.919922,30.559937c0.280029,-4.279907 3.120117,-8.51001 1.22998,-12.719971c-0.100098,-0.359985 -0.280029,-1.069946 -0.379883,-1.429932c0.189941,-6.160034 0.22998,-12.320068 -0.650146,-18.420044c-1.099854,-19.599976 0.860107,-39.320068 -1.25,-58.859985c-0.130127,-9.460083 0.139893,-18.920044 -0.169922,-28.369995l0.530029,-0.570068c6.609863,-6.819946 15.109863,-11.349976 22.629883,-17.039917c13.680176,-9.290039 28.060059,-17.650024 40.580078,-28.540039c4.25,-3 7.959961,-6.630005 11.199951,-10.690063c13.900146,-13.409912 21.300049,-32.949951 20.47998,-52.189941c0.48999,-21.48999 -7.149902,-42.459961 -18.340088,-60.540039c-9.189941,-15.339966 -20.989746,-28.869995 -33.159912,-41.869995c-6.409912,-5.630005 -11.439941,-12.529907 -17.5,-18.47998c-11.290039,-12.549927 -21.639893,-25.920044 -31.149902,-39.849976l-0.219971,-0.560059c-0.030029,-7.409912 0.399902,-14.829956 -0.170166,-22.219971c-1.829834,-12.630005 0.420166,-25.459961 -1.570068,-38.069946c-0.259766,-18.150024 -0.299805,-36.310059 -0.069824,-54.460083c0.159912,-3.059937 0.119873,-6.119995 0.089844,-9.159912c0.110107,-0.170044 0.320068,-0.52002 0.420166,-0.690063c-0.52002,-0.619995 -1.030029,-1.219971 -1.530029,-1.809937c0.449951,-2.26001 1.050049,-4.560059 0.790039,-6.869995c-1.939941,-12.880005 -0.090088,-25.960083 -1.209961,-38.900024c-0.400146,-3.930054 0.629883,-7.880005 -0.090088,-11.780029c-0.689941,-4.070068 -0.639893,-8.199951 -0.560059,-12.300049c-0.079834,-14.76001 0.25,-29.530029 -0.719971,-44.26001c-0.280029,-2.389893 0.080078,-4.77002 0.600098,-7.079956c12.75,1.420044 25.509766,3.02002 38.029785,5.940063c9.110107,2.189941 18.440186,4.73999 26.240234,10.169922c4.739746,3.190063 8.409912,8.310059 8.739746,14.150024c0.490234,8.380005 -3.659912,16.109985 -7.929932,23.02002c-3.079834,5.109985 -7.050049,9.589966 -10.409912,14.5c-1.590088,2.140015 -2.100098,5.819946 0.589844,7.349976c5.630127,3.410034 12.590088,2.790039 18.900146,2.690063c20.709961,-1.310059 41.01001,-6.230103 60.900146,-11.920044c17.22998,-5.179932 34.239746,-11.280029 50.329834,-19.369995c7.320068,-3.76001 14.469971,-7.98999 20.780029,-13.309937c9.589844,-8.080078 20.339844,-14.610107 30.659912,-21.690063c-7.369873,-4.569946 -14.089844,-10.130005 -19.77002,-16.700073c-13.959961,11.450073 -32.099854,16.640137 -49.949951,16.950073c-21.02002,0.460083 -42.369873,-3.109985 -61.549805,-11.900024c-14.820068,-6.609985 -28.130127,-16.119995 -40.650146,-26.329956c-16.400146,-13.240112 -32.709961,-26.599976 -48.310059,-40.76001c-6.27002,-5.790039 -12.599854,-11.559937 -18.149902,-18.049927c-0.380127,-0.480103 -1.139893,-1.450073 -1.52002,-1.930054l-0.25,-0.290039c19.199951,-18.779907 37.689941,-38.289917 57.189941,-56.76001c11.699951,11.569946 24.26001,22.240112 36.77002,32.910034c15.959961,13.149902 33.48999,24.689941 52.780029,32.349976c11.390137,4.170044 23.540039,7.579956 35.780029,6.26001c4.829834,-0.440063 9.089844,-2.900024 13.299805,-5.099976c-3.719971,4.75 -9.719971,6.72998 -15.449951,7.72998c9.090088,2.159912 18.570068,2.199951 27.850098,1.47998c3.810059,-11.579956 5.679932,-24.109985 3.030029,-36.149902c-3.890137,-17.330078 -12.580078,-33.030029 -17.98999,-49.850098c-7.810059,-22.98999 -8.530029,-48.290039 -2.370117,-71.75c3.73999,-15.409912 11.910156,-29.589966 22.870117,-40.98999c14.469971,-15.060059 32.899902,-25.530029 51.790039,-34.050049c4.809814,-1.949951 9.589844,-3.98999 14.349854,-6.079956c9.689941,-3.77002 20.070068,-6.140015 28.840088,-11.940186c6.959961,-4.129883 13.830078,-8.559814 19.670044,-14.219971c6.169922,-6 10.339966,-13.76001 13.309937,-21.77002c2.52002,-6.879883 3.449951,-14.899902 0.089966,-21.649902c-3.529907,-7.26001 -10.640015,-11.800049 -17.640015,-15.26001c-14.339966,-6.879883 -30.099854,-10.080078 -44.629883,-16.52002c-13.75,-6.209961 -25.960205,-16.52002 -33.100098,-29.939941c-5.610107,-10.699951 -8.139893,-22.850098 -8.189941,-34.880127c0.530029,-6.899902 3.089844,-13.459961 3.869873,-20.339844c1.219971,-8.810059 1.870117,-18.860107 -3.639893,-26.459961c0.48999,10.079834 -0.219971,20.329834 -3.820068,29.839844c-3.040039,9.820068 -9.139893,18.610107 -10.409912,28.959961c-0.860107,5.730225 0.449951,11.730225 3.579834,16.600098c6.430176,10.310059 16.720215,17.709961 22.230225,28.659912c3.109863,5.830078 4.329834,13.01001 1.849854,19.290039c-1.629883,3.900146 -3.75,7.780029 -7.199951,10.370117c3.369873,-6.400146 8.030029,-13.350098 5.629883,-20.940186c-5.219971,-17.149902 -24.369873,-24.599854 -31.089844,-40.859863c-3.679932,-9.389893 -2.179932,-19.969971 1.199951,-29.219971c3.98999,-10.840088 8.139893,-22.110107 7.399902,-33.860107c-0.659912,-8.030029 -2.859863,-16.23999 -7.699951,-22.780029c-3.699951,-3.649902 -7.530029,-7.219971 -11.659912,-10.379883c2.77002,5.73999 7.25,10.52002 9.389893,16.600098c2.850098,6.819824 2.97998,14.829834 -0.26001,21.539795c-4.809814,10.340088 -15.049805,16.780029 -20.25,26.850098c-2.209961,4.119873 -2.030029,8.889893 -2.469971,13.409912c-1.27002,-5.669922 -0.869873,-11.790039 2,-16.929932c4.719971,-9.649902 13.870117,-16.719971 16.860107,-27.280029c1.869873,-6.359863 -0.459961,-13.070068 -4.030029,-18.369873c-10.120117,-15.030029 -26.550049,-25.370117 -33.75,-42.430176c-7.409912,-19.109863 -1.77002,-40.879883 9.550049,-57.23999c2.959961,-3.540039 3.149902,-8.27002 4.369873,-12.51001c2.140137,-7.829834 5.880127,-15.119873 10.280029,-21.899902c4.26001,-6.900146 8.179932,-14.380127 9.030029,-22.570068c1.139893,-14.399902 -4.919922,-29.530029 -16.669922,-38.219971c-10.050049,-7.610107 -23.310059,-8.469971 -33.920166,-15.040039c-10.109863,-5.629883 -17.77002,-14.699951 -23.419922,-24.639893c-3.969971,-7.51001 -10.909912,-13.110107 -18.639893,-16.400146c-3.140137,3.360107 -6.929932,6.050049 -10.030029,9.429932c-0.709961,5.100098 -1.02002,10.450195 0.189941,15.5c1.429932,4.75 6.5,6.680176 10.800049,7.990234c12.879883,3.629883 26.300049,6.359863 37.929932,13.289795c6.290039,3.890137 12.080078,9.340088 14.51001,16.5c2.399902,6.670166 1.929932,14 0.110107,20.73999c-0.870117,0.47998 -1.720215,0.960205 -2.560059,1.440186c0.149902,-5.77002 0.310059,-11.560059 -0.129883,-17.330078c-0.550293,-0.360107 -1.660156,-1.100098 -2.210205,-1.469971c-3.559814,-7.570068 -10.859863,-12.380127 -18.550049,-15.050049c-10.97998,-4.02002 -22.72998,-4.919922 -34.099854,-7.320068c-6.880127,-1.48999 -13.780029,-5.129883 -17.27002,-11.47998c-2.409912,-3.98999 -3.060059,-8.659912 -3.75,-13.179932c-22.550049,11.709961 -47.790039,17.530029 -73.080078,18.699951c-9.02002,1.52002 -18.030029,3.110107 -27.179932,3.590088c-0.439941,0.030029 -1.310059,0.099854 -1.75,0.129883c-0.52002,-0.599854 -1.040039,-1.199951 -1.540039,-1.789795c0.26001,-0.380127 0.77002,-1.140137 1.030029,-1.52002c-1.150146,-5.630127 0.429932,-11.310059 -0.320068,-16.950195c-0.609863,-7.319824 -0.02002,-14.669922 -0.27002,-22c-0.23999,-4.339844 -1.079834,-8.629883 -0.97998,-12.97998c0.140137,-11.679932 -0.069824,-23.359863 -0.029785,-35.040039c-0.110107,-7.689941 0.439941,-15.419922 -0.780273,-23.049805c-0.25,-8.710205 -0.589844,-17.48999 0.47998,-26.160156c0.420166,-2.559814 -1.22998,-4.75 -2.239746,-6.939941c0.689941,-1.570068 1.409912,-3.149902 1.819824,-4.820068c-1.899902,-1.73999 -4.159912,-3.099854 -5.629883,-5.27002c3.649902,1.550049 7.429932,3.140137 11.459961,3.150146c3.97998,-0.01001 7.949951,-0.51001 11.939941,-0.560059c2.040039,-0.189941 4.439941,0.22998 6.100098,-1.290039c7.699951,-6.219971 12.560059,-15.060059 17.47998,-23.469971c6.810059,-12.070068 14.169922,-24.080078 24.449951,-33.550049m20.909912,36.570068c-14.779785,2.159912 -26.969727,11.899902 -36.839844,22.530029c-5.290039,6.159912 -9.840088,12.909912 -14.060059,19.830078c-2.679932,6.369873 -7.370117,12.129883 -8.060059,19.169922c1.570068,-1.189941 2.810059,-2.72998 3.670166,-4.51001c5.349854,-9.939941 12.419922,-18.780029 19.550049,-27.47998c6.109863,-6.290039 12.169922,-12.860107 19.809814,-17.340088c12.5,-9 30.159912,-12.459961 44.300049,-5.22998c5.580078,2.870117 11.330078,5.850098 15.530029,10.650146c4.23999,3.789795 8.02002,8.029785 11.459961,12.549805c12.869873,17.790039 24.169922,36.73999 38.119873,53.73999c4.570068,5.75 10.48999,10.130127 15.950195,14.970215c8.459961,4.869873 17.579834,10.099854 27.699951,9.559814c9.51001,0.790039 18.919922,-1.76001 27.629883,-5.399902c4.200195,-2.280029 8.98999,-3.919922 12.26001,-7.550049c-6.079834,1.679932 -11.709961,4.689941 -17.849854,6.159912c-8.01001,2.340088 -16.530029,2.25 -24.73999,1.330078c-9.02002,-2.030029 -17.450195,-6.530029 -24.560059,-12.379883c-22.570068,-20.840088 -36.899902,-48.790039 -58.859863,-70.180176c-8.480225,-8.329834 -18.580078,-15.209961 -29.880127,-19.039795c-6.900146,-1.620117 -14.090088,-2.75 -21.130127,-1.380127m-18.659912,51.649902c-9.330078,4.870117 -17.209961,12 -24.5,19.480225c-5.48999,4.909912 -9.650146,11.039795 -14.290039,16.709961c-3.129883,4.349854 -6.419922,8.73999 -8.429932,13.72998c4.330078,-2.689941 6.339844,-7.76001 10.169922,-11.040039c4.030029,-4.890137 8.410156,-9.459961 13,-13.840088c8.390137,-7.469971 16.890137,-15.079834 27.060059,-20.079834c14.140137,-8.77002 32.620117,-11.51001 48.129883,-4.780029c13.150146,5.379883 21.990234,17.22998 29.150146,28.98999c5.619873,9.790039 10.849854,19.800049 16.459961,29.589844c5.139893,8.23999 11.150146,16.52002 19.959961,21.130127c8.290039,5.310059 18.429932,5.949951 27.97998,6.689941c11.600098,-0.51001 23.209961,-2.619873 34.070068,-6.800049c21.159912,-7.429932 40.560059,-19.659912 62.619873,-24.540039c9.860107,-2.679932 20.290039,-3.369873 30.380127,-1.589844c4.380005,0.339844 8.599976,2.060059 13.040039,1.849854c-7.300049,-3.179932 -15.080078,-5.429932 -23.040039,-6.029785c-5.660034,-0.900146 -11.420044,-0.820068 -17.02002,0.329834c-11.140137,1.25 -21.850098,4.719971 -32.330078,8.540039c-19.829834,8.080078 -39.159912,18.600098 -60.719971,21.280029c-10.22998,0.689941 -20.909912,0.699951 -30.48999,-3.429932c-10.819824,-5.27002 -18.780029,-14.810059 -25.030029,-24.840088c-4.659912,-6.26001 -7.679932,-13.48999 -11.98999,-19.959961c-5.089844,-8.959961 -10.679932,-17.780029 -18.169922,-24.949951c-7.699951,-8.450195 -18.679932,-13.580078 -29.910156,-15.160156c-12.639893,-1.969971 -25.279785,2.469971 -36.099854,8.719971m160.02002,137.410156c7.47998,5.790039 14.47998,12.669922 18.780029,21.219971c4.889893,7.870117 6.97998,16.98999 9.280029,25.839844c2.409912,9.550049 2.469971,19.450195 3.599854,29.180176c0.180176,7.040039 -0.099854,14.100098 0.680176,21.119873c-0.680176,10.320068 -0.420166,20.680176 -0.440186,31.030029c0.640137,5.630127 0.860107,11.290039 0.949951,16.950195c2.170166,18.739746 5.410156,37.379883 10.300049,55.599854c3.25,9.170166 5.610107,18.820068 10.850098,27.120117c8.23999,16.27002 21.629883,29.780029 37.709961,38.349854c18.609985,10.110107 39.190063,15.72998 59.090088,22.640137c17.73999,6.349854 35.709961,14.469971 48.689941,28.569824c10.820068,10.27002 20.820068,21.51001 28.589966,34.290039c6.26001,8.780029 10.090088,18.940186 14.100098,28.870117c4.469971,14.050049 7.22998,28.790039 6.639893,43.589966c0.310059,11.390137 -1.089966,22.73999 -3.189941,33.920166c-3.959961,18.889893 -9.280029,37.529907 -16.550049,55.419922c-3.809937,10.820068 -7.809937,22 -7.439941,33.640015c-0.23999,8.359985 1.859985,17.109985 6.900024,23.910034c-0.01001,-3.22998 -2.02002,-5.890137 -2.880005,-8.880127c-2.359985,-6.719971 -2.609985,-14.119873 -1.119995,-21.049927c2.140015,-12.210083 7.089966,-23.700073 12.219971,-34.900024c3.52002,-8.689941 6.319946,-17.630005 9.51001,-26.429932c1.400024,-4.97998 2.449951,-10.060059 3.929932,-15.02002c5.920044,-24.199951 7.810059,-49.830078 2.070068,-74.260132c-4.75,-18.75 -13.290039,-36.560059 -25.119995,-51.860107c-4.580078,-7.22998 -11.280029,-12.709961 -16.670044,-19.279785c-6.569946,-6.150146 -12.939941,-12.620117 -20.48999,-17.580078c-18.25,-12.650146 -40.23999,-17.580078 -61.179932,-23.840088c-16.990112,-5.469971 -34.570068,-10.849854 -48.76001,-22.129883c-7.97998,-5.640137 -14.120117,-13.360107 -19.48999,-21.429932c-10.540039,-16.960205 -14.680176,-36.790039 -17.930176,-56.220215c-1.609863,-13.669922 -4.439941,-27.280029 -4.039795,-41.089844c-1.980225,-18.940186 0.259766,-38.080078 -1.670166,-57.030029c-0.839844,-20.76001 -4.5,-41.97998 -14.899902,-60.25c-4.810059,-7.930176 -11.130127,-15.070068 -19.140137,-19.890137c-0.76001,-0.419922 -2.899902,-1.809814 -2.879883,-0.119873m178.839966,33.550049c-0.449951,2.619873 1.540039,4.859863 2.52002,7.149902c6.849976,14.080078 15.329956,27.439941 26.049927,38.890137c3.590088,3.109863 5.970093,7.389893 9.950073,10.099854c5.849976,5.600098 12.049927,10.969971 19.290039,14.73999c5.75,3.850098 11.97998,7 18.419922,9.550049c16.300049,5.639893 30.790039,15.98999 41.660034,29.360107c11.199951,14.589844 18.869995,31.849854 22.319946,49.929932c3.540039,19.97998 2.570068,41.719971 -7.75,59.679932c-4.359985,7.199951 -9.549927,13.860107 -13.789917,21.130127c-6.27002,8.559814 -12.01001,17.5 -17.470093,26.579834c-2.099976,3.900146 -3.359985,8.160156 -4.719971,12.350098c-2.380005,7.23999 -2.289917,15.530029 1.369995,22.350098c3.27002,6.98999 9.420044,11.879883 14.780029,17.199951c2.699951,2.599854 6.130005,4.47998 8.209961,7.709961c1.920044,3.099854 5.51001,4.540039 7.609985,7.48999c2.580078,3.699951 6.210083,6.5 8.910034,10.119873c6.560059,7.610107 12.450073,15.810059 17.530029,24.480225c3.859985,5.529785 6.059937,11.930054 8.929932,17.97998c5.240112,12.049927 7.970093,24.98999 9.820068,37.940063c1.089966,10.149902 0.140015,20.559937 -3.73999,30.059937c-7.849976,19.690063 -20.459961,36.97998 -33.200073,53.75c-5.719971,9.01001 -12.649902,17.299927 -16.97998,27.130005c-4.219971,8.609985 -8.319946,18.339966 -5.900024,28.079956c0.480103,5.670044 3.950073,10.380005 7.370117,14.690063c5,5.369873 10.099976,10.75 16.319946,14.75c9.01001,6.800049 19.640015,10.809937 29.439941,16.280029c8.190063,3.669922 16.51001,7.069946 24.869995,10.369873c5.25,2.469971 10.330078,5.300049 15.880005,7.090088c8.070068,4.050049 16.180054,8.169922 23.610107,13.359985c5.399902,4.529907 10.789917,9.380005 14.48999,15.469971c-0.190063,-1.609985 -0.290039,-3.309937 -1.359985,-4.599976c-5.5,-8.090088 -13.470093,-14.150024 -21.590088,-19.429932c-16.530029,-10.160156 -34.630005,-17.25 -51.929932,-25.930054c-17.680054,-8.430054 -35.880005,-18.27002 -47.450073,-34.579956c-4.890015,-6.48999 -4.52002,-15.450073 -2.109985,-22.830078c2.25,-8.48999 7.780029,-15.48999 12.170044,-22.929932c3.47998,-6.310059 8.5,-11.540039 12.449951,-17.530029c12.670044,-17.77002 26.290039,-35.689941 32.040039,-57.110107c3.469971,-11.779907 2.5,-24.289917 0.119995,-36.179932c-3.359985,-18.119995 -10.23999,-35.48999 -20.170044,-51.000122c-11,-16.580078 -24.880005,-31.099854 -39.75,-44.22998c-5.26001,-5.439941 -12.049927,-9.350098 -16.109985,-15.889893c-4.97998,-6.320068 -4.969971,-14.850098 -3.809937,-22.410156c1.429932,-5.689941 4.26001,-10.879883 6.949951,-16.040039c10.430054,-18.209961 24.48999,-34.079834 34.130005,-52.759766c10.060059,-25.540039 8.25,-54.76001 -1.949951,-79.960205c-2.25,-7.149902 -6.710083,-13.290039 -10.369995,-19.75c-5.700073,-8.429932 -12.930054,-15.709961 -20.550049,-22.389893c-7.670044,-5.340088 -15.579956,-10.5 -24.449951,-13.630127c-18.140015,-6.289795 -34.76001,-17.030029 -47.910034,-31.039795c-12.800049,-12.720215 -23.440063,-27.570068 -31.339966,-43.790039c-0.619995,-0.780029 -1.710083,-3.140137 -2.810059,-1.75m-202.349976,124.899902c3.340088,4.850098 6.349854,10.179932 10.969971,13.949951c-1.419922,-3.969971 -4.209961,-7.22998 -5.909912,-11.070068c-5.210205,-9.969971 -7.620117,-21.049805 -9.320068,-32.069824c-2.439941,9.77002 -1.48999,20.699951 4.26001,29.189941m69.889893,63.800049c-3.679932,3.540039 -6.02002,8.189941 -7.77002,12.919922c-2.48999,7.01001 -4.059814,14.790039 -1.709961,22.070068c2.75,10.73999 10.949951,18.939941 19.790039,25.100098c6.400146,5.269775 13.969971,8.709961 21.140137,12.759766c23,11.640137 47.339966,20.330078 70.549927,31.5c6.52002,3.600098 13.630005,6.060059 19.810059,10.280029c10.23999,5.98999 20.459961,12.580078 28.049927,21.850098c2.5,3.51001 5.140015,6.929932 7.410034,10.600098c4.910034,9.359863 6.189941,20.289795 4.679932,30.679932c-3.199951,18.690063 -9.689941,36.570068 -15.019897,54.710083c-6.720093,20.060059 -12.470093,40.569946 -14.900024,61.639893c-3.76001,31.480103 7.859985,63.850098 29.179932,87.030029c6.050049,6.640137 12.280029,13.25 19.690063,18.390137c7.179932,6.429932 15.400024,11.589844 23.780029,16.309937c15.899902,9.789917 33.429932,16.509888 50.939941,22.759888c15.300049,3.930176 30.040039,9.680176 44.640015,15.630127c10.630005,4.790039 20.969971,10.189941 31.329956,15.559937c13.840088,8.160034 27.540039,16.76001 39.580078,27.490112c8.119995,6.199951 14.819946,14.149902 20.140015,22.849854c2.609985,3.930054 3.279907,8.670044 4.769897,13.070068c0.860107,-7.26001 -2.849976,-14.22998 -6.709961,-20.119995c-3.439941,-5.140015 -7.170044,-10.119995 -11.780029,-14.26001c-14.72998,-15.099976 -32.23999,-27.180054 -50.619995,-37.390015c-17.619995,-10.359985 -36.47998,-18.419922 -55.719971,-25.209961c-19.089966,-5.380005 -37.599976,-12.719971 -55.150024,-21.949951c-17.51001,-8.860107 -33.880005,-20.300049 -47.540039,-34.450073c-7.839966,-7.390015 -13.649902,-16.559937 -19.339966,-25.619995c-2.669922,-5.75 -5.869995,-11.280029 -7.549927,-17.420044c-4.220093,-10.339966 -5.380005,-21.589966 -5.980103,-32.630005c0.410034,-4.699951 0.560059,-9.409912 0.670044,-14.109985c3.5,-36.22998 18.440063,-69.849976 26.800049,-104.98999c2.390015,-10.130127 3.449951,-20.959961 0.449951,-31.080078c-2.150024,-8.98999 -7.369995,-16.899902 -13.459961,-23.72998c-9.640015,-10.370117 -21.560059,-18.360107 -33.880005,-25.189941c-10.060059,-5.030029 -20.01001,-10.340088 -30.530029,-14.370117c-18.77002,-8.419922 -38.200073,-15.300049 -56.609985,-24.52002c-7.939941,-4.5 -16.26001,-8.540039 -23.060059,-14.72998c-5.040039,-4.73999 -10.379883,-9.790039 -12.389893,-16.629883c-3.390137,-9.560059 -0.800049,-19.969971 3.619873,-28.72998c1.02002,-1.959961 2.48999,-3.790039 2.699951,-6.070068m245.630127,117.22998c0.310059,1.280029 1.079956,1.48999 2.329956,0.650146c-0.349976,-1.300049 -1.130005,-1.510254 -2.329956,-0.650146m9.780029,3.100098c11.670044,3.349854 23.099976,7.599854 34.199951,12.529785c17.050049,7.660156 33.940063,17.350098 45.660034,32.26001c0.01001,-10.079834 -5.429932,-19.73999 -13.920044,-25.119873c-11.359985,-7.709961 -24.909912,-11.030029 -38.109985,-14.030029c-9.26001,-1.98999 -18.530029,-3.929932 -27.829956,-5.639893m25.76001,24.809814c1.540039,2.130127 3.380005,4.030029 5.180054,5.969971c12.589966,13.990234 22.48999,30.400146 28.869995,48.110229c6.199951,16.550049 8.76001,34.22998 9,51.839966c2.649902,9.73999 4.299927,19.849976 3.630005,29.970093c-0.930054,22.619873 -9.670044,43.949951 -19.380005,64.079834c-3.720093,7.680176 -5.820068,16.460083 -4.110107,24.960083c1.610107,8.309937 6.950073,15.700073 14.150024,20.099976c-4.539917,-16.329956 -4.699951,-33.599976 -1.619995,-50.209961c4.410034,-25.469971 12.810059,-50.01001 18.810059,-75.109985c-3.880005,-1.230103 -6.72998,-4.380005 -7.780029,-8.280029c-3.079956,-10.579956 -2.030029,-21.789917 -1.040039,-32.599976c1.22998,-13.119995 5.090088,-25.810059 7.100098,-38.800171c-2.240112,-4.98999 -5.670044,-9.369873 -9.26001,-13.449951c-11.680054,-12.76001 -27.680054,-20.419922 -43.550049,-26.580078m57.839966,53.890259c-5.319946,16.48999 -10.069946,33.569946 -9.640015,51.049927c0.300049,4.920044 1.109985,11.599976 6.719971,13.200073c3.220093,-14.52002 6.050049,-29.300049 5.75,-44.23999c-0.22998,-6.710083 -0.409912,-13.680176 -2.829956,-20.01001m-386.809937,76.98999c-8.410156,18.379883 -11.390137,39.189941 -8.560059,59.189941c3.099854,22.390015 13.76001,43.179932 14.959961,65.909912c0.620117,10.77002 -2.159912,21.330078 -5.800049,31.380127c6.370117,0.449951 13.23999,-0.530029 18.370117,-4.630127c7.689941,-6.069824 11.859863,-17.319824 7.819824,-26.629883c-1.279785,-3.600098 -4.379883,-5.939941 -6.689941,-8.810059c8.070068,3.689941 12.199951,12.280029 12.689941,20.810059c1.200195,-7.25 -0.779785,-14.459961 -3.349854,-21.180054c-3.75,-10.339966 -9.140137,-20 -12.840088,-30.349976c-3.839844,-11.429932 -5.679932,-23.619995 -4.540039,-35.659912c0.350098,-4.350098 1.850098,-8.620117 1.300049,-13.02002c-1.439941,-18.720093 3.320068,-37.48999 11.530029,-54.22998c2.659912,-5.730103 6.209961,-10.960083 9.179932,-16.51001c-14.199951,7.719971 -27.099854,18.889893 -34.069824,33.72998m405.039917,157.039917c7.670044,5.890015 15.290039,12.039917 21.410034,19.630005c2.309937,3.109985 5.829956,4.880005 8.899902,7.140015c7.480103,5.390015 14.140015,11.880005 19.76001,19.200073c-8.049927,-22.210083 -27.769897,-39.050049 -50.069946,-45.970093m-358.130005,12.710083c-8.570068,15.23999 -18.689941,29.619873 -30.439941,42.569946c1.969971,4.390015 5.669922,7.920044 9.139893,11.22998c3.620117,3.02002 7.179932,6.349976 11.530029,8.299927c5.179932,-2.689941 10,-6.049927 15.080078,-8.929932c3.139893,-1.810059 6.26001,-3.639893 9.349854,-5.530029c0.910156,-4.790039 1.47998,-9.629883 2.22998,-14.429932c0.370117,-2.810059 1.660156,-5.880005 -0.199951,-8.439941c-4.909912,-8.780029 -7.570068,-18.51001 -11.47998,-27.700073c-0.080078,-1.359985 -0.189941,-2.720093 -0.320068,-4.049927c-2.409912,1.679932 -3.389893,4.569824 -4.889893,6.97998m-54.409912,108.01001c-0.800049,1.26001 -1.27002,2.689941 -1.340088,4.189941c-0.669922,8.219971 -3.659912,15.97998 -5.26001,24.030029c-2.560059,6.859985 -4.47998,13.939941 -7.169922,20.76001c-7.01001,19.869995 -14.550049,40.02002 -15.550049,61.299927c-0.130127,10.359985 -0.600098,20.790039 1.159912,31.060059c1.680176,14.48999 5.47998,28.589966 9.290039,42.640015c2.719971,8.390015 5.199951,16.899902 8.780029,24.98999c9.090088,25.189941 22.77002,49.209961 25.659912,76.26001c0.650146,8.039917 1.219971,16.199951 -0.859863,24.109985c-2.120117,9.76001 -6.850098,18.969971 -13.570068,26.339966c-7.899902,10.359985 -18.669922,18.050049 -27.02002,27.98999c-5.560059,8.570068 -10.669922,18.070068 -10.599854,28.580078c-1.900146,22.949951 8.649902,44.429932 10.219971,67.039917c0,8.47998 0.659912,17.290039 -2.700195,25.310059c-2.099854,7.369995 -6.869873,13.589966 -12.149902,19c-6.959961,6.189941 -15.209961,10.640015 -23.790039,14.169922c-18.919922,8.140015 -39.639893,13.040039 -56.439941,25.430054c2.390137,0.02002 4.330078,-1.449951 6.340088,-2.540039c4.809814,-2.709961 9.959961,-4.72998 15.02002,-6.909912c8.849854,-3.940063 18.389893,-6.02002 27.309814,-9.780029c14.050049,-4.430054 28.130127,-10.72998 38.360107,-21.660034c8.290039,-8.890015 11.909912,-21.089966 12.889893,-32.969971c1.040039,-19.780029 -5.459961,-38.77002 -8.939941,-58c-1.429932,-10.52002 -2.340088,-21.630005 1.370117,-31.800049c2.75,-8.289917 7.909912,-15.660034 14.369873,-21.48999c13.860107,-13.540039 28.439941,-28.329956 32.959961,-47.859985c4.459961,-19.920044 -0.329834,-40.439941 -6.089844,-59.579956c-3.810059,-9.940063 -6.969971,-20.130005 -11.090088,-29.950073c-4.050049,-12.069946 -8.73999,-23.959961 -11.560059,-36.400024c-5.540039,-20.889893 -9.709961,-42.289917 -9.899902,-63.959961c-0.51001,-21.869995 6.51001,-42.880005 12.349854,-63.670044c4.77002,-18.419922 10.920166,-37.449951 7.950195,-56.629883m14.119873,408.649902c-4.139893,10.829956 -2.129883,22.630005 -0.649902,33.77002c9.02002,-3.099976 18.379883,-6.200073 25.839844,-12.369995c5.440186,-4.440063 9.570068,-10.76001 10.51001,-17.800049c1.360107,-9.97998 -1.389893,-19.849976 -3.780029,-29.449951c-13.77002,3.180054 -26.569824,12.5 -31.919922,25.849976m-34.5,100.73999c5.699951,-3.890015 10.429932,-9.209961 14.030029,-15.069946c-4.73999,4.959961 -9.380127,10.02002 -14.030029,15.069946z" stroke-width="0.5" stroke="#60261A" fill="#60261A"/>
14 <path id="svg_4" d="m-2488.374268,-2702.678955c7.25,-1.590088 14.580078,-2.949951 22.030029,-2.899902c17.590088,0.059814 35.719971,4.339844 50,14.98999c11.810059,8.659912 20.120117,21.030029 27.310059,33.579834c6.449951,10.940186 12.339844,23 23.25,30.23999c1.469971,2.170166 3.72998,3.530029 5.629883,5.27002c-0.409912,1.670166 -1.129883,3.25 -1.819824,4.820068c1.009766,2.189941 2.659912,4.380127 2.23999,6.939941c-1.070068,8.670166 -0.730225,17.450195 -0.480225,26.160156c1.220215,7.629883 0.670166,15.359863 0.780273,23.049805c-0.040039,11.680176 0.169922,23.360107 0.029785,35.040039c-0.099854,4.350098 0.740234,8.640137 0.97998,12.97998c0.25,7.330078 -0.339844,14.680176 0.27002,22c0.75,5.640137 -0.829834,11.320068 0.320068,16.950195c-0.26001,0.379883 -0.77002,1.139893 -1.030029,1.52002c0.5,0.589844 1.02002,1.189941 1.540039,1.789795c-22.609863,1.100098 -45.540039,-1.189941 -67.169922,-8.039795c-21.130127,-6.540039 -41.400146,-17.77002 -55.52002,-35.120117c-4.399902,3.27002 -9.090088,6.5 -11.959961,11.300049c-3.640137,5.909912 -7.120117,12 -11.970215,17.02002c-6.829834,7.439941 -15.75,12.679932 -25.239746,15.97998c-5.460205,12.079834 -5.650146,26.429932 -0.180176,38.540039c7.300049,16.25 20.130127,29.22998 27.610107,45.379883c5.959961,12.170166 7.52002,26.570068 3.300049,39.540039c-3.310059,11.040039 -10.580078,20.360107 -18.720215,28.310059c-7.27002,7.439941 -15.859863,14.109863 -20.369873,23.73999c-3.800049,8.110107 -3.310059,18.100098 1.429932,25.719971c5.01001,8.26001 13.219971,13.929932 21.649902,18.280029c-3.199707,1.110107 -6.369873,-0.580078 -9.519775,-0.969971c-9.580078,-5.140137 -18.080078,-13.449951 -21.110107,-24.130127c-2.119873,-8.51001 -1.320068,-17.869873 2.919922,-25.619873c7.640137,-14.420166 22.070068,-23.780029 29.590088,-38.280029c5.52002,-10.340088 6.850098,-23.070068 2.439941,-34.060059c-5.379883,-13.890137 -16.079834,-24.639893 -24.569824,-36.600098c-6.460205,-8.869873 -12.200195,-18.599854 -14.440186,-29.459961c-1.799805,-6.929932 -1.559814,-14.129883 -1.369873,-21.209961c-10.949951,7.800049 -17.209961,21.120117 -17.390137,34.439941c-0.399902,9.610107 4.140137,18.48999 8.950195,26.5c3.780029,5.840088 7.129883,12 9.369873,18.600098c3.890137,11.169922 4.649902,23.129883 4.51001,34.859863c0.199951,17.110107 -3.030029,34.630127 -11.580078,49.620117c-7.919922,14.26001 -20.319824,25.630127 -34.25,33.910156c-4.01001,2.27002 -7.119873,5.959961 -8.669922,10.299805c-3.070068,8.320068 -2,17.400146 -0.469971,25.930176c1.189941,7.01001 3.919922,13.889893 3.090088,21.119873c-0.900146,17.380127 -7.670166,34.870117 -20.810059,46.650146c-12.219971,11.909912 -28.800049,17.23999 -44.709961,22.219971c-11.100098,3.849854 -22.800049,7.429932 -31.860107,15.25c-5.73999,4.829834 -8.98999,12.429932 -8.159912,19.929932c0.929932,8.600098 4.790039,16.600098 9.349854,23.840088c7.650146,11.579834 20.22998,18.289795 31.850098,25.199951c7.649902,4.52002 15.23999,9.319946 21.820068,15.329956c6.129883,7.200073 13.030029,13.710083 19.01001,21.050049c17.589844,20.969971 32.199951,45.880005 34.969971,73.580078c3.079834,28.040039 -7.330078,55.869873 -23.209961,78.589966c-4.110107,5.519897 -5.330078,12.47998 -6.280029,19.130005c3.969971,-2.469971 8.02002,-5.369995 12.939941,-5.199951c-2.469971,1.569946 -5.179932,2.699951 -7.629883,4.289917c-5.76001,4.210083 -8.610107,12.160034 -6.350098,19.030029c2.340088,8.680054 9.98999,14.609985 17.949951,17.959961c10.429932,4.349976 21.560059,7.040039 32.830078,7.980103c11.929932,1.389893 24.02002,1.909912 35.909912,-0.170166c-1.23999,-0.22998 -2.47998,-0.469971 -3.689941,-0.669922c-1.409912,-0.429932 -2.790039,-0.890015 -4.179932,-1.330078c1.97998,-0.289917 3.969971,-0.569824 5.969971,-0.859863c-1.780029,-0.290039 -3.550049,-0.570068 -5.320068,-0.75c24.159912,-2.190063 47.610107,-9.620117 69.610107,-19.620117c15.439941,-9.359863 29.159912,-21.22998 42.629883,-33.179932c7.070068,-6.340088 14.48999,-12.369995 20.51001,-19.77002c6.100098,5.219971 11.530029,11.169922 17.150146,16.890015c13.209961,13.400024 26.569824,26.650024 39.849854,39.97998l0.25,0.290039c-10.530029,12.559937 -22.939941,23.339966 -35.23999,34.099976c-10.640137,9.26001 -21.540039,18.209961 -32.560059,27.01001c1.130127,-4.48999 4.820068,-7.609985 6.910156,-11.609985c10.369873,-17.599976 15.659912,-37.809937 17.809814,-58.01001c1.440186,-10.380005 1.610107,-20.930054 0.930176,-31.369995c-1.73999,5.639893 -1.360107,11.579956 -1.940186,17.389893c-2.339844,19.580078 -5.659912,39.430176 -14.199951,57.370117c-3.47998,8.089966 -8.159912,15.639893 -13.409912,22.689941c-5.140137,5.780029 -10.800049,11.080078 -16.149902,16.660034c0.579834,0.099976 1.739746,0.309937 2.319824,0.410034c-15.98999,11.099976 -34.040039,19.530029 -53.290039,22.97998c-16.75,3.030029 -34.189941,4.01001 -50.939941,0.439941c-11.159912,-2.449951 -21.919922,-7.209961 -30.719971,-14.559937c5.119873,0.839966 9.439941,4.170044 14.649902,4.75c9.330078,2.22998 18.960205,0.779907 28.100098,-1.619995c8.149902,-2.610107 16.090088,-6.699951 21.77002,-13.25c6.820068,-6.699951 11.219971,-15.350098 14.98999,-24.01001c4.120117,-10.199951 8.339844,-20.360107 12.600098,-30.51001c3.639893,-9.169922 10.169922,-16.719971 14.699951,-25.380005c-6.820068,4.650024 -10.75,12.089966 -15.420166,18.660034c-6.72998,11.040039 -11.869873,22.949951 -17.169922,34.719971c-2.639893,6.089966 -5.959961,11.899902 -9.929932,17.22998c-5.880127,8.72998 -15.209961,14.859985 -25.27002,17.679932c-11.830078,4.060059 -25.130127,3.790039 -36.76001,-0.829834c-4.26001,-1.5 -7.640137,-4.620117 -11.629883,-6.650146c-12.640137,-13.02002 -22.640137,-28.329956 -31.690186,-43.97998c-4.199951,-7.119873 -7.809814,-14.569946 -12.300049,-21.48999c-1.449951,4.120117 -3.009766,8.300049 -3.419922,12.689941c0.439941,5.210083 1.910156,10.290039 3.330078,15.310059c3.149902,16.77002 7.849854,33.25 13.389893,49.380005c4.320068,11.52002 8.940186,23.380005 17.429932,32.530029c8.27002,8.529907 18.680176,14.650024 29.410156,19.579956c18.060059,8.130127 37.359863,13.180054 56.780029,16.840088c26.579834,4.829956 53.709961,7.199951 80.72998,5.689941c6.699951,-0.73999 13.76001,-0.73999 19.969971,-3.699951c5.080078,-2.430054 7.070068,-8.390015 6.899902,-13.680054c-0.290039,-11.809937 -4.599854,-23.119995 -4.709961,-34.950073c-0.060059,-5.629883 1.360107,-11.679932 5.52002,-15.72998c4.660156,-4.599854 11.340088,-6.25 17.660156,-6.97998c9.949951,-1.329956 19.959961,0.030029 29.869873,0.940063c1.340088,0.130005 2.679932,0.279907 4.050049,0.450073c-0.52002,2.309937 -0.880127,4.689941 -0.600098,7.079834c0.969971,14.730103 0.640137,29.5 0.719971,44.26001c-0.079834,4.100098 -0.129883,8.22998 0.560059,12.300049c0.719971,3.900024 -0.310059,7.849976 0.090088,11.780029c1.119873,12.939941 -0.72998,26.02002 1.209961,38.900024c0.26001,2.309937 -0.340088,4.609985 -0.790039,6.869995c0.5,0.589966 1.01001,1.189941 1.530029,1.809937c-0.100098,0.170044 -0.310059,0.52002 -0.420166,0.690063c-2.789795,1.72998 -5.359863,3.819946 -7.329834,6.469971c-10.820068,12.130005 -18.23999,27.790039 -18.959961,44.170044c-1.870117,17.959961 2.52002,36.049927 9.439941,52.549927c4.790039,10.670044 11.380127,20.359985 18.130127,29.869995c0.389893,0.590088 0.779785,1.220093 1.209961,1.859985c-1.220215,5.150024 -0.610107,10.450073 -0.660156,15.690063c0.070068,8.01001 -0.159912,16.030029 0.02002,24.049927c2.330078,18.240112 -0.369873,36.740112 1.959961,54.980103c0.170166,14 -0.199951,28.019897 0.130127,42.019897c1.530029,10.910034 0.659912,21.940063 0.859863,32.920044c0.160156,10.670044 -0.069824,21.339966 0.100098,32.02002c1.590088,12.569946 0.76001,25.280029 0.899902,37.920044c0.290039,4.139893 -1.800049,9.529907 1.830078,12.689941c-0.899902,0.73999 -1.780029,1.5 -2.659912,2.280029c-5.48999,4.26001 -9.700195,9.849976 -13.860107,15.349976c-6.550049,9.109985 -10.399902,20.47998 -9.179932,31.76001c0.800049,12.390015 7.609863,23.059937 12.859863,33.949951c5.200195,11.440063 11.209961,22.690063 13.580078,35.170044c0.27002,-1.469971 0.51001,-2.969971 0.75,-4.400024c1.890137,4.209961 -0.949951,8.440063 -1.22998,12.719971c-3.280029,2.580078 -6.140137,5.630005 -8.550049,9.040039c-9.320068,12.900024 -20.619873,25 -25.52002,40.469971c-3.070068,9.119995 -2.030029,19.550049 3.350098,27.619995c7.73999,12.670044 22.959961,17.700073 31.869873,29.27002c4.790039,6.130005 6.200195,14.910034 2.850098,22.040039c-3.77002,8.5 -12.01001,14.109985 -20.649902,16.869995c-1.370117,-0.440063 -2.690186,-0.790039 -4.02002,-1.160034c0.319824,-0.569946 0.969971,-1.709961 1.290039,-2.280029c6.039795,-2.179932 11.739746,-5.799927 15.509766,-11.079956c2.620117,-3.780029 4.140137,-8.650024 2.900146,-13.189941c-1.179932,-4.570068 -4.560059,-8.160034 -8.209961,-10.930054c-8.179932,-6.23999 -17.780029,-10.569946 -25.090088,-17.929932c-6.48999,-6.26001 -11.01001,-14.480103 -12.679932,-23.340088c3.040039,12.380005 5.719971,25.27002 3.159912,38.02002c-1.149902,6.800049 -4,13.170044 -7.47998,19.089966c-4.22998,8.040039 -6.97998,17.900024 -3.370117,26.690063c3.140137,8.359985 10.540039,14.130005 18.310059,17.97998c-0.040039,0.540039 -0.109863,1.630005 -0.149902,2.170044c-10.540039,-1.410034 -20.98999,-6.26001 -27.459961,-14.930054c-7,-8.97998 -8.709961,-20.910034 -7.640137,-31.969971c0.410156,-6.72998 3.300049,-13.209961 2.439941,-20.01001c-1.019775,-9.209961 -5.909912,-17.390015 -11.029785,-24.880005c-10.890137,-15.410034 -24.610107,-28.469971 -36.76001,-42.819946c0.629883,2.719971 1.320068,5.449951 1.629883,8.259888c-0.389893,1.390015 -0.77002,2.880005 -1.169922,4.330078c-0.689941,-1.089966 -1.350098,-2.160034 -1.98999,-3.219971c-3.649902,-15.51001 -12.320068,-29.560059 -23.25,-41c-6.419922,-7.130005 -12.810059,-14.290039 -19.219971,-21.420044c3.570068,0.439941 6.73999,2.179932 9.849854,3.869995c8.330078,4.550049 17.310059,7.76001 25.670166,12.280029c18.419922,8.369995 36.76001,18.349976 50.579834,33.459961c8.310059,8.640015 13.990234,19.609985 16.75,31.25c0.650146,2.209961 0.720215,4.890015 2.780029,6.380005c-1.679932,-15.079956 -8.280029,-29.420044 -18.409912,-40.699951c-12.73999,-14.52002 -29.810059,-24.230103 -46.680176,-33.170044c-10.579834,-5.599976 -21.739746,-10.02002 -32.099854,-16.030029c-4.090088,-2.26001 -8.469971,-3.98999 -12.280029,-6.72998c-1.98999,-1.48999 -4.379883,-2.219971 -6.810059,-2.51001c-11.409912,-11.179932 -24.47998,-20.469971 -37.579834,-29.530029c-0.72998,-3.890015 -3.780029,-6.599976 -5.900146,-9.73999c-12.030029,-15.949951 -18.719971,-35.939941 -17.909912,-55.959961c1.110107,-16.140015 5.969971,-31.910034 13.790039,-46.050049c17.070068,-33.130005 47.840088,-55.859985 68.780029,-86.189941c17.73999,-25.560059 28.359863,-56.530029 27.429932,-87.820068c0.47998,-10.719971 -1.26001,-21.409912 -4.52002,-31.589966c-6.179932,-18.179932 -15.300049,-35.52002 -27.820068,-50.130005c-4.719971,-6.189941 -10.310059,-11.630005 -15.609863,-17.309937c-5.640137,-6.030029 -12.169922,-11.140015 -17.870117,-17.109985c-7.23999,-7.460083 -15.030029,-14.410034 -21.76001,-22.340088c-6.23999,-8 -12.349854,-16.309937 -16.089844,-25.809937c-8.73999,-19.640015 -9.51001,-41.530029 -16.030029,-61.830078c-0.73999,5.790039 0.969971,11.48999 1.23999,17.26001c1.719971,20.580078 4.179932,42.080078 15.27002,60.02002c4.76001,8.570068 11.550049,15.700073 17.899902,23.080078c4.98999,5.709961 11.27002,10.049927 16.449951,15.569946c18.48999,16.900024 37.900146,34.23999 48.390137,57.52002c4.839844,11.289917 7.27002,23.5 8.290039,35.699951c3.879883,30.150024 -2.030029,61.560059 -16.910156,88.089966c-9.659912,19.290039 -24.659912,35.070068 -38.719971,51.170044c-11.23999,12.339966 -21.5,25.550049 -30.379883,39.690063c-9.080078,15.189941 -15.820068,31.909912 -18.460205,49.48999c-1.879883,17.279907 0.060059,35.319946 7.970215,51c1.759766,5.149902 5.909912,9 7.709961,14.109985c-13.340088,-7.859985 -26.950195,-15.359985 -41.100098,-21.670044c10.540039,10.619995 20.73999,21.880005 27.830078,35.160034c5.01001,9.48999 8.389893,20.169922 7.790039,31c-0.48999,8.839966 -3.690186,17.48999 -9.030029,24.549927c-7.040039,9.650024 -17.100098,17.060059 -22.179932,28.110107c-0.740234,-1.300049 -1.480225,-2.570068 -2.210205,-3.820068c4.600098,-10.589966 13.310059,-18.530029 19.280029,-28.26001c4.719971,-7.579956 6.820068,-16.849976 5.280029,-25.689941c-2.139893,-12.560059 -9.590088,-23.440063 -17.929932,-32.73999c-18.080078,-19.76001 -40.860107,-34.210083 -62.47998,-49.690063c-6.910156,-5.380005 -15.530029,-7.619995 -23.219971,-11.569946c-18.77002,-8.720093 -37.02002,-18.890015 -53.100098,-32c-12.969971,-10.440063 -24.310059,-23.050049 -32.630127,-37.51001c-0.779785,-1.280029 -1.579834,-2.52002 -2.429932,-3.719971c3.870117,15.179932 10.690186,29.689941 20.310059,42.089966c11.719971,14.809937 28.02002,24.77002 42.639893,36.380005c13.51001,10.079956 27.880127,19.109985 40.210205,30.689941c0.089844,0.940063 0.169922,1.900024 0.25,2.880005c-0.360107,0.130005 -1.080078,0.390015 -1.440186,0.52002c-13.889893,-11.709961 -30.119873,-20.049927 -45.22998,-29.969971c-12.649902,-8.640015 -26.159912,-16.160034 -37.579834,-26.469971c-13.140137,-11.850098 -22.850098,-27.140015 -29.570068,-43.410034c-7,-16.97998 -11.080078,-35.070068 -13.02002,-53.300049c-1.600098,-19.929932 3.840088,-39.630005 10.51001,-58.219971c7.849854,-21.309937 18.129883,-41.650024 29.639893,-61.189941c2.23999,-4.900024 1.820068,-10.5 2.060059,-15.73999c-12.649902,13.779907 -27.709961,24.969971 -42.149902,36.759888c-10.709961,8.850098 -21.300049,18.200073 -29.050049,29.860107c-6.110107,8.98999 -9.900146,19.569946 -10.659912,30.439941c-0.690186,6.47998 0.419922,12.949951 0.879883,19.420044c-4.110107,-12.830078 -4.919922,-26.890015 -1.209961,-39.910034c3.52002,-12.920044 11.01001,-24.319946 19.47998,-34.52002c13.879883,-16.689941 30.639893,-30.75 44.179932,-47.72998c5.620117,-7.390015 11.449951,-15.130005 14.090088,-24.119995c-3.800049,-17.410034 -10.280029,-34.099976 -15.780029,-51.01001c-6.449951,-18.930054 -12.290039,-38.180054 -15.119873,-58.02002c-3.410156,-24.459961 -1.730225,-49.97998 7.199951,-73.149902c-4.860107,2.559937 -10.110107,4.459961 -15.610107,4.959961c-5.340088,0.550049 -11.040039,0.379883 -15.820068,3.219971c-7.669922,4 -11.309814,14.48999 -7.559814,22.290039c4.119873,6.309937 8.339844,12.609985 11.539795,19.469971c8.700195,17.26001 10.940186,37.23999 8.410156,56.25c-2.47998,18.040039 -11.01001,34.910034 -23.080078,48.419922c-12.47998,13.960083 -28.209961,24.700073 -44.909912,32.990112c-4.130127,2.169922 -8.98999,3.399902 -12.040039,7.189941c-0.189941,-1.459961 -0.530029,-2.930054 -0.22998,-4.369995c2.899902,-12.329956 7.349854,-24.329956 13.530029,-35.410034c4.599854,-9.409912 11.439941,-17.47998 16.379883,-26.699951c2.449951,-4.839966 5.320068,-9.450073 7.600098,-14.359985c4.719971,-11.27002 8.040039,-23.540039 6.75,-35.849976c-1.580078,-16.590088 -7.660156,-32.240112 -12.72998,-47.980103c-3.51001,-10.599976 -6.800049,-21.280029 -10.070068,-31.959961c-4.01001,-13.330078 -6.310059,-27.179932 -6.870117,-41.080078c-0.47998,-25.309937 6.440186,-50.469971 18.490234,-72.639893c5.769775,-10.850098 12.719971,-21.040039 20.379883,-30.630005c16.310059,-22.049927 36.330078,-40.980103 56.969971,-58.900024c16.75,-14.47998 35.02002,-27.619995 48.659912,-45.300049c8.840088,-11.22998 16.350098,-24.030029 19,-38.22998c3.75,-16.22998 0.580078,-33.459961 -6.359863,-48.399902c-13.669922,-31.610107 -38.52002,-56.560181 -53.649902,-87.35022c-2.200195,-5.790039 -4.370117,-12.050049 -3.100098,-18.309814c1.649902,-8.77002 8.22998,-15.920166 15.97998,-19.960205c15.22998,-8.869873 32.76001,-12.22998 49.629883,-16.549805c11.080078,-2.940186 22.430176,-5.200195 32.950195,-9.890137c7.389893,-2.659912 15.27002,-6.97998 18.069824,-14.810059c4.290039,-11.359863 0.820068,-23.579834 -1.259766,-35.019775c-1.720215,-10.610107 -4.130127,-21.240234 -3.790039,-32.050049c0.339844,-15.969971 6.689941,-31.790039 17.72998,-43.360107c8.839844,-10.100098 20.049805,-17.689941 31.51001,-24.48999c5.819824,-3.26001 10.780029,-7.910156 14.859863,-13.149902c3.219971,-5.280029 4.330078,-11.920166 2.679932,-17.920166c-2.669922,-11.219971 -9.809814,-20.540039 -15.329834,-30.449951c-9.27002,-15.169922 -18,-30.97998 -22.719971,-48.23999c-2.550049,-9.179932 -4.700195,-18.77002 -3.390137,-28.350098c1.590088,-10.659912 7.430176,-20.27002 14.969971,-27.799805c11.25,-10.190186 24.51001,-18.050049 38.690186,-23.420166c18.859863,-8.23999 39.079834,-12.47998 59.149902,-16.550049c-8.550049,-0.719971 -16.909912,1.820068 -25.219971,3.450195c-15.709961,3.109863 -30.949951,8.209961 -45.679932,14.419922c-8.660156,4.389893 -17.5,8.719971 -24.950195,15.030029c-10.619873,7.97998 -18.72998,19.689941 -21.339844,32.810059c-1.949951,9.069824 -0.400146,18.439941 1.659912,27.359863c4.550049,18.560059 12.679932,36.110107 22.77002,52.300049c5.929932,10.070068 12.939941,19.810059 15.820068,31.320068c1.649902,5.799805 -0.650146,12.26001 -4.900146,16.379883c-3.949951,3.780029 -8.329834,7.140137 -13.219971,9.630127c-8.889893,4.780029 -16.419922,11.530029 -24.159912,17.909912c-12.72998,12.48999 -22.209961,29.090088 -23.110107,47.199951c-1.47998,10.680176 0.880127,21.340088 2.600098,31.850098c2.300049,12.159912 6.429932,24.419922 4.449951,36.929932c-1.429932,8.300049 -9.349854,13.280029 -16.469971,16.420166c-27.409912,11.329834 -58.209961,13.069824 -84.330078,27.75c-7.549805,4.669922 -14.429932,11.819824 -15.869873,20.899902c-1.400146,10.810059 2.810059,21.429932 8.679932,30.300049c6.919922,12.189941 14.890137,23.719971 22.630127,35.389893c9.530029,15.430054 20.26001,30.450073 26.23999,47.730103c4.829834,13.590088 6.149902,28.689941 2.25,42.670044c-3.380127,13.47998 -11.310059,25.209961 -20.100098,35.73999c-12.25,14.170044 -27.050049,25.77002 -41.659912,37.380005c-5.280029,4.73999 -10.76001,9.26001 -16.01001,14.040039c-8.070068,6.540039 -14.930176,14.379883 -22.390137,21.569946c-8.589844,8.150024 -16.129883,17.319946 -23.51001,26.549927c-15.809814,19.640137 -28.659912,41.98999 -35.639893,66.320068c-3.340088,11.51001 -5.01001,23.449951 -5.48999,35.419922c-0.410156,24.780029 6.300049,48.970093 14.719971,72.060059c3.72998,11.280029 7.580078,22.51001 11.310059,33.800049c3.189941,9.709961 5.459961,19.859985 5.099854,30.150024c0.23999,11.079956 -3.899902,21.669922 -8.669922,31.47998c-7.02002,15.25 -17.969971,28.390015 -24.100098,44.089966c-5.459961,11.060059 -8.339844,23.170044 -10.329834,35.280029c-0.570068,2.159912 0.01001,4.23999 1.290039,6.049927c-2.890137,18.550049 3.289795,36.76001 5.139893,55.070068c0.48999,20.299927 -3.620117,41.339966 -14.98999,58.449951c-9.919922,15.01001 -25.140137,25.920044 -41.77002,32.400024c-12.600098,4.800049 -25.909912,8.23999 -39.399902,9c16,-4.810059 31.76001,-11.910034 44.27002,-23.199951c12.869873,-11.710083 20.309814,-28.52002 22.399902,-45.630005c2.959961,-23.060059 -1.959961,-46.430054 -10.209961,-67.930054c-6.97998,-18.77002 -9,-39.47998 -4.73999,-59.109985c1.909912,-9.969971 5.559814,-19.459961 8.849854,-29.02002c-8.829834,13.589966 -23.349854,22.709961 -30.559814,37.469971c-5.050049,9.690063 -6.01001,21.070068 -3.980225,31.710083c4.830078,27.73999 22.01001,51.329956 28.060059,78.699951c3.630127,16.359985 -0.780029,34.160034 -11.709961,46.880005c-6.429932,7.72998 -14.659912,13.75 -23.449951,18.550049c-9.630127,5.339966 -19.23999,11.380005 -30.23999,13.409912c-16.050049,3.190063 -33.790039,2.109985 -47.850098,-6.959961c-7.149902,-4.48999 -13.609863,-11.069946 -15.579834,-19.52002c-2.050049,-8.650024 0.939941,-17.599976 5.51001,-24.929932c7.389893,-11.790039 18.209961,-21.060059 30.029785,-28.230103c0.050049,0.100098 0.160156,0.300049 0.210205,0.390015c-2.410156,1.430054 -4.830078,3.200073 -5.780029,5.980103c-1.73999,4.759888 0.409912,9.839966 3.129883,13.769897c5.939941,8.320068 14.350098,15.210083 24.340088,17.940063c9.619873,2.939941 21.119873,1.809937 28.780029,-5.160034c6.429932,-5.689941 8.790039,-14.630005 8.549805,-22.949951c-0.439941,-13.400024 -6.419922,-25.840088 -13.629883,-36.869995c-9.27002,-14.280029 -20.97998,-26.950073 -28.709961,-42.22998c-10.419922,-19.930054 -16.650146,-42.380005 -15.949951,-64.970093c0.169922,-8.22998 2.22998,-16.27002 4.809814,-24.039917c3.670166,-10.600098 8.860107,-20.930054 16.920166,-28.890015c-14.540039,8.77002 -24.580078,22.77002 -35.02002,35.77002c-11.320068,14.339966 -26.660156,24.630005 -39.27002,37.699951c-11.030029,10.849976 -19.350098,24.97998 -21.570068,40.439941c-0.949951,7.570068 -0.179932,16.02002 4.97998,22.040039c8.030029,9.400024 22.959961,11.719971 33.610107,5.579956c6.550049,-3.789917 10.849854,-10.389893 13.879883,-17.129883c3.090088,-7.090088 5.469971,-14.460083 8.850098,-21.420044c-0.469971,7.079956 1.919922,13.920044 1.959961,20.98999c1.179932,12.23999 -1.860107,25.069946 -9.580078,34.800049c-9.559814,12.569946 -25.159912,19.619995 -40.76001,20.25c-18.51001,1.329956 -38.5,-6.350098 -48.469971,-22.600098c-9.97998,-16.679932 -11.069824,-37.819946 -4.969971,-56.059937c5.590088,-17.200073 16.800049,-31.940063 29.689941,-44.369995c-5.649902,1.109985 -11.419922,1.969971 -17.179932,1.309937c-1.47998,-0.299927 -4.199951,-0.26001 -3.550049,-2.709961c9.310059,1.050049 18.570068,-1.430054 27.02002,-5.180054c2.880127,-1.23999 5.209961,-3.380005 7.570068,-5.369995c8.330078,-7.079956 17.280029,-13.380005 26,-19.949951c5.469971,-5.630005 9.639893,-12.650024 11.929932,-20.160034c2.030029,-6.549927 0.330078,-13.400024 -1.069824,-19.880005c-3.540039,-14.640015 -9.590088,-28.529907 -13.100098,-43.179932c-1.610107,-6.800049 -3.370117,-14.090088 -0.709961,-20.869995c2.550049,-7.480103 9.589844,-11.849976 15.879883,-15.930054c4.920166,-3.040039 9.370117,-6.780029 13.26001,-11.050049c-3.040039,-20.379883 -1.810059,-41.649902 5.570068,-61.02002c-5.320068,-8.639893 -11.889893,-16.649902 -15.649902,-26.159912c-3.220215,-7.869995 -2.600098,-17.330078 2.339844,-24.350098c6.040039,-8.709961 15.290039,-14.549927 24.5,-19.429932c17.25,-8.829956 36.25,-13.310059 55,-17.679932c11.72998,-2.890137 23.959961,-4.810059 34.699951,-10.650024c7.100098,-3.829956 13.890137,-10.26001 14.48999,-18.77002c0.490234,-8.01001 -2.309814,-16.039917 -6.449951,-22.789917c-17.859863,-20.910156 -29.659912,-46.870117 -33.619873,-74.090088c-2.76001,-17.689941 -1.590088,-35.72998 1.589844,-53.280029c-4.959961,16.880127 -5.189941,34.709961 -4.22998,52.150024c0.75,16.960083 6.709961,33.089966 8.330078,49.930054c0.75,12.639893 -3.449951,25.199951 -10.300049,35.719971c-8.040039,12.429932 -20.050049,22.47998 -34.199951,27.179932c0.619873,-1.27002 1.25,-2.530029 1.869873,-3.780029c17.360107,-8.579834 30.050049,-25.869873 33.460205,-44.869873c2.699951,-15.090088 -4.390137,-29.330078 -8.120117,-43.570068c-3.820068,-14.199951 -5.969971,-28.829956 -6.389893,-43.52002c-0.880127,-20.199951 1.819824,-41.199951 11.839844,-59.069946c8.340088,-15 22.040039,-27.440186 38.600098,-32.530029c4.860107,-5.709961 9.97998,-11.219971 15.599854,-16.190186c6.130127,-5.279785 13.77002,-8.279785 20.240234,-13.089844c0.359863,1.300049 0.379883,2.659912 -0.660156,3.679932c-4.839844,6.080078 -10.459961,11.550049 -16.619873,16.290039c-2.340088,1.780029 -4.600098,3.709961 -6.400146,6.050049c8.920166,-3.380127 15.170166,-11.110107 22.180176,-17.26001c11.969971,-12 20.119873,-27.540039 24.319824,-43.890137c5.810059,-20.48999 5.02002,-42 4.52002,-63.059814c-0.899902,-8.640137 -0.530029,-17.340088 -1.469971,-25.969971c-0.689941,-7.100098 -0.110107,-14.25 -0.840088,-21.340088c-1.099854,-11.600098 0.220215,-23.199951 0.680176,-34.790039c1.419922,-13.360107 4.149902,-26.98999 11.169922,-38.640137c9.179932,-17.969971 25.110107,-31.079834 41.080078,-42.819824c11.219971,-7.73999 22.310059,-15.680176 33.319824,-23.719971c14.330078,-10.940186 27.620117,-23.890137 36,-40.050049c3.330078,-6.699951 6.330078,-13.620117 7.97998,-20.949951c4,-16.320068 9.450195,-32.460205 18.200195,-46.880127c5.199951,-7.580078 10.329834,-15.47998 17.699951,-21.169922c4.669922,-3.900146 9.969971,-6.939941 15.369873,-9.709961c5,-2.570068 10.650146,-3.220215 16.030029,-4.650146c-7,-0.719971 -13.77002,1.949951 -20.039795,4.73999c-12.220215,6.02002 -22.620117,15.51001 -30.110107,26.860107c-9.77002,14.26001 -16.330078,30.47998 -20.550049,47.189941c-5.199951,20.51001 -17.47998,39.030029 -34.030029,52.169922c-11.309814,9.960205 -24.159912,17.969971 -36.649902,26.340088c-11.280029,8.300049 -23.050049,16.090088 -32.840088,26.179932c-5.330078,6.060059 -10.869873,12.040039 -14.869873,19.100098c-7.469971,12.139893 -11.790039,26.030029 -13.630127,40.110107c-2.599854,25.939941 -1,52.069824 0.830078,78c0.909912,14.219971 2.290039,28.459961 1.609863,42.719971c-0.049805,2.109863 -0.539795,4.179932 -1.469971,6.069824c-1.429932,-6.389893 -3.439941,-12.679932 -6.579834,-18.449951c-3.570068,-7.109863 -9.110107,-12.909912 -13.920166,-19.169922c-6.22998,-7.360107 -11.289795,-15.600098 -15.909912,-24.040039c-2.439941,10.340088 -1.73999,21.550049 2.859863,31.209961c6.200195,13.120117 15.960205,24.51001 20.120117,38.590088c2.129883,7.340088 2.350098,15.27002 0.629883,22.709961c-2.829834,10.110107 -12.379883,17.290039 -22.399902,19.340088c-9.040039,1.859863 -18.800049,2.149902 -27.439941,-1.570068c-7.22998,-3.070068 -14.560059,-7.48999 -18.280029,-14.689941c-4.179932,-8.560059 -3.830078,-19.620117 2.25,-27.199951c5.780029,-7.110107 16.419922,-9.380127 24.699951,-5.610107c4.600098,1.98999 8,5.919922 10.530029,10.149902c-2.75,-2.899902 -5.189941,-6.25 -8.820068,-8.119873c-7.409912,-4.179932 -17.569824,-2.540039 -23.219971,3.859863c-5.879883,6.550049 -6.129883,16.75 -2.129883,24.320068c3.389893,6.419922 10.310059,9.820068 16.839844,12.23999c7.920166,3.050049 16.719971,1.98999 24.710205,-0.219971c7.069824,-2.189941 13.879883,-7.699951 15.299805,-15.27002c0.76001,-6.609863 0.100098,-13.530029 -2.73999,-19.609863c-5.97998,-13.410156 -16.649902,-24.080078 -22.589844,-37.530029c-6.73999,-15.060059 -6.22998,-32.709961 -0.430176,-47.98999c0.820068,-2.459961 2.48999,-5.01001 1.320068,-7.650146c-9.639893,-33.530029 -5.149902,-70.810059 11.850098,-101.23999c14.290039,-25.810059 38.02002,-46.429932 65.97998,-56.090088c10.830078,-4.079834 22.619873,-4.949951 33.25,-9.649902c7.040039,-3.02002 13.300049,-7.639893 18.659912,-13.080078c-16.280029,-0.76001 -32.570068,-3.199951 -48.869873,-1.429932c-20.790039,2.189941 -41.390137,7.630127 -60.02002,17.219971c-14.130127,7.370117 -27.310059,17.850098 -34.640137,32.300049c-0.719971,-0.139893 -2.179932,-0.439941 -2.909912,-0.580078c4.639893,-13.079834 14.01001,-23.929932 24.679932,-32.550049c12.939941,-10.289795 27.890137,-17.799805 43.350098,-23.529785c15.52002,-5.600098 31.72998,-9.600098 48.23999,-10.630127c14.030029,-0.929932 28.22998,-0.119873 42.090088,-2.889893c0.899902,-5.300049 1.089844,-10.689941 1.889893,-16c3.169922,-21.390137 13.080078,-41.689941 27.840088,-57.47998c21.109863,-22.850098 52.459961,-35.850098 83.569824,-34.280029c12.160156,0.72998 23.860107,4.899902 36.060059,5.290039c10.790039,0.22998 22,-2.910156 30.100098,-10.290039c9.52002,-8.630127 14.309814,-21.51001 14.809814,-34.170166c0.940186,-20.779785 8.540039,-40.839844 20.080078,-58.019775c-14.590088,12.849854 -19.98999,32.25 -29.830078,48.399902c-5.48999,8.790039 -11.5,18.159912 -21.159912,22.800049c-11.879883,5.679932 -25.820068,4.849854 -38.27002,1.72998c0.030029,-0.459961 0.100098,-1.370117 0.140137,-1.830078c5.689941,0.110107 11.369873,1.090088 17.069824,0.449951c9.580078,-0.599854 19.560059,-4.169922 25.590088,-11.97998c11.169922,-14.48999 15.209961,-32.709961 22.889893,-49c5.290039,-11.77002 13.370117,-22.419922 24.040039,-29.810059c15.810059,-10.969971 34.530029,-17.169922 53.469971,-19.889893m-9.189941,80.899902c-12.709961,10.550049 -23.560059,23.890137 -29.639893,39.370117c0.97998,-0.26001 1.779785,-0.790039 2.419922,-1.590088c5.370117,-6.579834 10.370117,-13.530029 16.679932,-19.280029c16.199951,-15.72998 35.699951,-30.049805 58.679932,-33.079834c9.360107,-1.110107 18.820068,1.560059 27.070068,5.879883c7.830078,4.98999 15.639893,10.219971 24.409912,13.47998c9.570068,4.560059 19.97998,7.219971 30.52002,8.25c2.530029,0.300049 5.010254,-0.469971 7.280029,-1.549805c-2.25,-1.050049 -4.75,-1.100098 -7.129883,-1.51001c-16.27002,-4.120117 -31.130127,-12.190186 -46.73999,-18.160156c-6.469971,-2.449951 -12.719971,-5.560059 -19.419922,-7.329834c-8.460205,-1.970215 -17.240234,-2.840088 -25.890137,-1.920166c-14.109863,2 -27.140137,8.699951 -38.23999,17.439941m-290.530029,267.570068c-6.560059,3.160156 -13.169922,6.47998 -18.590088,11.420166c-8.329834,6.139893 -14.129883,15.059814 -18.669922,24.23999c-4.389893,10.769775 -7.330078,22.299805 -7.119873,34c0.129883,8.060059 -0.370117,16.159912 0.73999,24.169922c3.179932,37.810059 13.689941,74.660156 15.789795,112.600098c1.220215,13.23999 -0.139893,26.789795 -4.099854,39.48999c-2.420166,5.829834 -5.189941,11.819824 -10.030029,16.059814c-5,5.440186 -11.370117,9.25 -17.120117,13.810059c-18.309814,13.429932 -37.539795,26.360107 -51.849854,44.240112c-9.790039,12.449951 -16.380127,27.72998 -16.910156,43.699951c0.450195,11.460083 0.910156,23.300049 5.460205,34.01001c-0.030029,-4.109863 -1.600098,-7.97998 -1.950195,-12.049927c-1.929932,-13.319946 -1.529785,-27.210083 3.150146,-39.950073c5.060059,-15.029907 16.329834,-26.75 27.76001,-37.25c16.159912,-13.819946 34.379883,-24.910034 51.319824,-37.720093c5.670166,-4.709961 10.540039,-10.439941 13.810059,-17.079834c3.530029,-7.680176 5.630127,-15.960205 6.590088,-24.340088c2.189941,-23.98999 -1.76001,-47.919922 -5.969971,-71.459961c-4.98999,-29.900146 -12.530029,-59.699951 -11.820068,-90.219971c-0.080078,-10.920166 1.969971,-21.890137 6.370117,-31.920166c2.22998,-6.5 6.949951,-11.609863 10.819824,-17.139893c2.320068,-3.360107 5.949951,-5.400146 8.870117,-8.169922c6.469971,-5.760254 14.689941,-8.840088 22.340088,-12.600098c-3.080078,0.089844 -6.120117,0.810059 -8.890137,2.159912m128.72998,316.650146c1.23999,3.5 3.649902,6.390015 5.47998,9.599976c6.320068,10.660034 12.699951,21.390015 16.910156,33.090088c1.859863,5.789917 4.52002,11.329956 5.599854,17.349854c3.469971,13.790039 3.679932,29.840088 -5.139893,41.75c-6.800049,9.110107 -14.280029,17.710083 -22.660156,25.400146c-7.719971,6.319946 -14.929932,13.289917 -23.199951,18.919922c-7.459961,6.26001 -15.699951,11.530029 -23.169922,17.790039c-11.320068,8.189941 -22.040039,17.179932 -32.110107,26.859985c-6.169922,6.539917 -12.179932,13.26001 -17.629883,20.430054c-10.130127,14.439941 -17.140137,30.809937 -22.699951,47.47998c-4.150146,10.119873 -6.48999,20.869873 -9.210205,31.439941c-4.969971,22.920044 -7.199951,46.77002 -3.559814,70.050049c0.719971,-10.02002 -0.26001,-20.100098 0.72998,-30.110107c2.929932,-32.329834 12.97998,-63.669922 26.589844,-93.01001c6.030029,-12.599854 14.150146,-24.149902 23.469971,-34.519897c5.720215,-6.950073 12.870117,-12.5 19.440186,-18.599976c8.030029,-5.910034 15.320068,-12.77002 23.5,-18.48999c13.47998,-10.090088 27.040039,-20.160034 39.399902,-31.620117c4.22998,-4.449951 8.72998,-8.629883 12.959961,-13.069946c7.100098,-8.469971 14.930176,-16.920044 18.27002,-27.700073c3.969971,-14.029907 1.22998,-28.939941 -3.719971,-42.349854c-5.100098,-15.01001 -13.72998,-28.440063 -22.199951,-41.719971c-2.130127,-3.150146 -4,-6.600098 -7.050049,-8.970093m23.630127,152.670044c-5.530029,9.469971 -11.5,18.880005 -19.73999,26.25c-6.920166,6.050049 -12.76001,13.280029 -20.080078,18.880005c-5.110107,4.900024 -10,10.039917 -15.050049,15c-4.379883,3.98999 -7.639893,9.01001 -12.030029,13c-7.060059,8.380005 -14.25,16.809937 -19.47998,26.5c-6.280029,10.25 -10.399902,21.640015 -13.810059,33.119995c-6.27002,23.040039 -9.449951,46.820068 -11.25,70.599976c-0.579834,20.02002 -0.309814,40.109985 2.440186,59.969971c3.219971,20.460083 9.159912,40.420044 16.719971,59.680054c8.569824,22.52002 18.169922,44.77002 23.919922,68.25c6,23.839966 7.080078,49.400024 -0.419922,73.040039c-12.030029,36.880005 -39.870117,66.029907 -52.110107,102.819946c-2.399902,7.51001 -4.790039,15.290039 -4.599854,23.25c3.469971,-7.880005 5.459961,-16.319946 8.409912,-24.390015c6.929932,-14.969971 16.580078,-28.439941 26.590088,-41.47998c4.339844,-5.98999 9.329834,-11.52002 13.209961,-17.829956c3.299805,-5.369995 7.290039,-10.390015 9.689941,-16.27002c1.909912,-4.589966 4.669922,-8.780029 6.469971,-13.410034c1.620117,-4.160034 2.919922,-8.419922 4.330078,-12.630005c7.179932,-23.419922 6.26001,-48.51001 1.530029,-72.299927c-2.890137,-11.73999 -5.630127,-23.570068 -10.189941,-34.790039c-2.960205,-8.560059 -6.330078,-16.969971 -9.890137,-25.290039c-4.5,-8.669922 -7.629883,-17.969971 -12.370117,-26.52002c-4.369873,-11.209961 -9.669922,-22.199951 -11.77002,-34.130005c-2.639893,-10.359985 -3.379883,-21.059937 -4.649902,-31.640015c-0.909912,-6.069946 -0.369873,-12.23999 -1.26001,-18.319946c-0.840088,-23.839966 1.290039,-47.910034 7.650146,-70.950073c5.399902,-20.379883 14.759766,-39.769897 27.899902,-56.289917c5.48999,-6.130005 10.76001,-12.460083 16.429932,-18.430054c7.660156,-8.030029 16.060059,-15.369873 23.080078,-24c12.719971,-12.869873 22.02002,-28.579956 30.780029,-44.290039c8.300049,-15.009888 17.580078,-29.529907 24.939941,-45.029907c-12.800049,9.150024 -17.560059,24.72998 -25.389893,37.630005m206.459961,42.380005c-5.880127,10.51001 -10.199951,21.799927 -13.699951,33.299927c-6.370117,19.72998 -8.890137,41.110107 -20.300049,58.870117c-9.070068,14.869873 -24.75,24.449951 -41.070068,29.530029c4.109863,0.039917 8.310059,-0.150146 12.25,-1.440063c7.76001,-3.450073 15.310059,-7.599976 21.600098,-13.369995c4.939941,-3.439941 8.159912,-8.610107 11.529785,-13.469971c8.690186,-13.300049 11.930176,-29.060059 15.910156,-44.190063c4.139893,-17.369995 9.189941,-34.640015 17.199951,-50.660034c1.189941,-3.73999 4.050049,-6.809937 4.590088,-10.73999c-3.75,3.27002 -5.560059,7.97998 -8.01001,12.170044m-202.420166,3.769897c-11.149902,11.51001 -23.75,21.610107 -34.059814,33.890137c-18.550049,18.779907 -34.870117,40.809937 -42.570068,66.379883c-2.550049,8.709961 -3.600098,17.840088 -3.169922,26.910034c-0.140137,12.77002 3.279785,25.26001 8.22998,36.930054c4.629883,12.209961 11.47998,23.399902 18.639893,34.269897c9.060059,14.070068 19.75,26.980103 29.550049,40.51001c11.120117,15.619995 21.459961,32.180054 27.27002,50.570068c4.169922,12.48999 7.48999,25.459961 7.639893,38.699951c0.090088,7.359985 0.230225,14.800049 -1.359863,22.050049c-2.610107,12.780029 -6.26001,25.390015 -11.380127,37.410034c-4.02002,9.079956 -7.359863,18.459961 -11.879883,27.319946c-8.149902,17.819946 -16.01001,35.900024 -21,54.900024c-6.350098,22.079956 -9.390137,45.869995 -3.810059,68.439941c4.72998,19.609985 15.910156,37.040039 29.290039,51.880005c1.22998,1.089966 2.820068,2.460083 4.600098,1.700073c2.329834,-0.540039 4.039795,-3.610107 2.319824,-5.619995c-2.709961,-3.650024 -5.790039,-7.02002 -8.23999,-10.860107c-9.5,-13.569946 -12.859863,-30.139893 -15.809814,-46.130005c-2.050049,-12.269897 -4.200195,-24.629883 -3.900146,-37.119995c0.22998,-10.97998 3.209961,-21.649902 6.780029,-31.949951c10.139893,-31.780029 25.330078,-61.780029 33.879883,-94.089966c6.580078,-23.97998 7.490234,-49.680054 1.330078,-73.830078c-3.949951,-16.819946 -11.919922,-32.380005 -21.429932,-46.679932c-11.400146,-18.48999 -24.5,-35.880005 -35.159912,-54.820068c-3.120117,-5.139893 -4.990234,-10.889893 -7.780273,-16.199951c-5.619873,-12.109985 -8.659912,-25.26001 -10.579834,-38.419922c-0.429932,-9.77002 -0.850098,-19.73999 1.439941,-29.330078c1.969971,-10.609985 5.870117,-20.790039 10.679932,-30.409912c9.100098,-18.560059 22.430176,-34.610107 36.050049,-49.980103c5.51001,-5.420044 10.76001,-11.079956 16.070068,-16.680054c0.100098,-0.599854 0.219971,-1.189941 0.339844,-1.76001c3.400146,-0.829834 7.490234,-5.509888 4.180176,-8.589844c-1.650146,-2.200073 -4.669922,-1.210083 -6.160156,0.609863m-280.809814,1.670166c-7.830078,3.669922 -16.400146,5.280029 -24.840088,6.859863c-25.52002,4.890137 -52.449951,7.930054 -75.040039,21.790039c-7.349854,4.620117 -15.649902,11.290039 -15.290039,20.890015c0.800049,10.700073 7.340088,19.680054 11.920166,29.040039c2.02002,-3.48999 3.579834,-7.230103 5.659912,-10.680054c13.350098,-23.459961 35.659912,-41.669922 61.370117,-49.889893c7.72998,-2.640137 16.099854,-3.450073 23.309814,-7.48999c4.820068,-2.760132 9.590088,-5.990112 12.910156,-10.52002m-114.890137,161.459961c-4.48999,3.169922 -9.550049,5.649902 -13.409912,9.629883c-3.070068,3.280029 -3.840088,8.090088 -2.919922,12.390015c3.389893,21.73999 14.369873,41.830078 15.139893,64.060059c0.389893,5.900024 -1.840088,11.439941 -3.840088,16.859985c7.820068,-5.280029 14.77002,-11.920044 19.940186,-19.849976c11.059814,-16.540039 13.75,-37.880005 8.819824,-56.98999c-1.949951,-8.02002 -8.079834,-13.890015 -11.699951,-21.089966c-2,-3.200073 -2.909912,-6.970093 -5,-10.080078c-2.570068,1.360107 -4.580078,3.52002 -7.030029,5.070068z" stroke-width="0.5" stroke="#6A281A" fill="#6A281A"/>
15 <path id="svg_5" d="m-2133.294189,-2663.818848c7.559814,-0.190186 14,-4.650146 21.089844,-6.680176c-6.209961,3.140137 -12.169922,7.130127 -19.050049,8.620117c-6.439941,1.439941 -13.099854,-0.820068 -18.209961,-4.75c0.560059,-1.150146 1.130127,-2.300049 1.709961,-3.449951c3.970215,3.51001 8.950195,6.559814 14.460205,6.26001z" stroke-width="0.5" stroke="#59291E" fill="#59291E"/>
16 <path id="svg_6" d="m-2273.444336,-2645.918945c7.040039,-1.369873 14.22998,-0.23999 21.130127,1.380127c11.300049,3.829834 21.399902,10.709961 29.880127,19.039795c21.959961,21.390137 36.289795,49.340088 58.859863,70.180176c7.109863,5.849854 15.540039,10.349854 24.560059,12.379883c8.209961,0.919922 16.72998,1.01001 24.73999,-1.330078c6.139893,-1.469971 11.77002,-4.47998 17.849854,-6.159912c-3.27002,3.630127 -8.059814,5.27002 -12.26001,7.550049c-8.709961,3.639893 -18.119873,6.189941 -27.629883,5.399902c-10.120117,0.540039 -19.23999,-4.689941 -27.699951,-9.559814c-5.460205,-4.840088 -11.380127,-9.220215 -15.950195,-14.970215c-13.949951,-17 -25.25,-35.949951 -38.119873,-53.73999c-3.439941,-4.52002 -7.219971,-8.76001 -11.459961,-12.549805c-4.199951,-4.800049 -9.949951,-7.780029 -15.530029,-10.650146c-14.140137,-7.22998 -31.800049,-3.77002 -44.300049,5.22998c-7.639893,4.47998 -13.699951,11.050049 -19.809814,17.340088c-7.130127,8.699951 -14.200195,17.540039 -19.550049,27.47998c-0.860107,1.780029 -2.100098,3.320068 -3.670166,4.51001c0.689941,-7.040039 5.380127,-12.800049 8.060059,-19.169922c4.219971,-6.920166 8.77002,-13.670166 14.060059,-19.830078c9.869873,-10.630127 22.060059,-20.370117 36.839844,-22.530029z" stroke-width="0.5" stroke="#6D3322" fill="#6D3322"/>
17 <path id="svg_7" d="m-2497.564209,-2621.779053c11.099854,-8.73999 24.130127,-15.439941 38.23999,-17.439941c8.649902,-0.919922 17.429932,-0.050049 25.890137,1.920166c6.699951,1.769775 12.949951,4.879883 19.419922,7.329834c15.609863,5.969971 30.469971,14.040039 46.73999,18.160156c2.379883,0.409912 4.879883,0.459961 7.129883,1.51001c-2.269775,1.079834 -4.75,1.849854 -7.280029,1.549805c-10.540039,-1.030029 -20.949951,-3.689941 -30.52002,-8.25c-8.77002,-3.26001 -16.579834,-8.48999 -24.409912,-13.47998c-8.25,-4.319824 -17.709961,-6.98999 -27.070068,-5.879883c-22.97998,3.030029 -42.47998,17.349854 -58.679932,33.079834c-6.309814,5.75 -11.309814,12.700195 -16.679932,19.280029c-0.640137,0.800049 -1.439941,1.330078 -2.419922,1.590088c6.079834,-15.47998 16.929932,-28.820068 29.639893,-39.370117z" stroke-width="0.5" stroke="#7A3623" fill="#7A3623"/>
18 <path id="svg_8" d="m-2095.484375,-2625.118896c5.22998,-6.600098 15.790039,-8.939941 22.400146,-3.02002c-2.939941,-1.050049 -5.97998,-2.47998 -9.170166,-1.840088c-4.5,0.620117 -8.139893,3.800049 -10.559814,7.469971c-0.900146,-0.869873 -1.790039,-1.73999 -2.670166,-2.609863z" stroke-width="0.5" stroke="#522A22" fill="#522A22"/>
19 <path id="svg_9" d="m-2292.104248,-2594.269043c10.820068,-6.25 23.459961,-10.689941 36.099854,-8.719971c11.230225,1.580078 22.210205,6.709961 29.910156,15.160156c7.48999,7.169922 13.080078,15.98999 18.169922,24.949951c4.310059,6.469971 7.330078,13.699951 11.98999,19.959961c6.25,10.030029 14.210205,19.570068 25.030029,24.840088c9.580078,4.129883 20.26001,4.119873 30.48999,3.429932c21.560059,-2.679932 40.890137,-13.199951 60.719971,-21.280029c10.47998,-3.820068 21.189941,-7.290039 32.330078,-8.540039c5.600098,-1.149902 11.359985,-1.22998 17.02002,-0.329834c7.959961,0.599854 15.73999,2.849854 23.040039,6.029785c-4.440063,0.210205 -8.660034,-1.51001 -13.040039,-1.849854c-10.090088,-1.780029 -20.52002,-1.090088 -30.380127,1.589844c-22.059814,4.880127 -41.459961,17.110107 -62.619873,24.540039c-10.860107,4.180176 -22.469971,6.290039 -34.070068,6.800049c-9.550049,-0.73999 -19.689941,-1.379883 -27.97998,-6.689941c-8.809814,-4.610107 -14.820068,-12.890137 -19.959961,-21.130127c-5.610107,-9.789795 -10.840088,-19.799805 -16.459961,-29.589844c-7.159912,-11.76001 -16,-23.610107 -29.150146,-28.98999c-15.509766,-6.72998 -33.989746,-3.98999 -48.129883,4.780029c-10.169922,5 -18.669922,12.609863 -27.060059,20.079834c-4.589844,4.380127 -8.969971,8.949951 -13,13.840088c-3.830078,3.280029 -5.839844,8.350098 -10.169922,11.040039c2.01001,-4.98999 5.300049,-9.380127 8.429932,-13.72998c4.640137,-5.670166 8.800049,-11.800049 14.290039,-16.709961c7.290039,-7.480225 15.170166,-14.610107 24.5,-19.480225z" stroke-width="0.5" stroke="#6D3322" fill="#6D3322"/>
20 <path id="svg_10" d="m-2671.414307,-2536.489014c6.27002,-2.790039 13.040039,-5.459961 20.040039,-4.73999c-5.379883,1.430176 -11.030029,2.080078 -16.030029,4.650146c-5.399902,2.77002 -10.699951,5.809814 -15.369873,9.709961c-7.370117,5.689941 -12.5,13.589844 -17.699951,21.169922c-8.75,14.419922 -14.200195,30.560059 -18.200195,46.880127c-1.649902,7.329834 -4.649902,14.25 -7.97998,20.949951c-8.379883,16.159912 -21.669922,29.109863 -36,40.050049c-11.01001,8.039795 -22.099854,15.97998 -33.319824,23.719971c-15.970215,11.73999 -31.900146,24.849854 -41.080078,42.819824c-7.02002,11.650146 -9.75,25.280029 -11.169922,38.640137c-0.460205,11.590088 -1.780029,23.189941 -0.680176,34.790039c0.72998,7.090088 0.150146,14.23999 0.840088,21.340088c0.939941,8.629883 0.570068,17.329834 1.469971,25.969971c0.5,21.059814 1.290039,42.569824 -4.52002,63.059814c-4.199951,16.350098 -12.349854,31.890137 -24.320068,43.890137c-7.01001,6.149902 -13.26001,13.879883 -22.179932,17.26001c1.800049,-2.340088 4.060059,-4.27002 6.400146,-6.050049c6.159912,-4.73999 11.779785,-10.209961 16.619873,-16.290039c1.040039,-1.02002 1.02002,-2.379883 0.659912,-3.679932c7.200195,-5.25 12.130127,-12.969971 15.900146,-20.900146c5.459961,-11.97998 7.030029,-25.549805 4.909912,-38.5c0.929932,-1.889893 1.420166,-3.959961 1.469971,-6.069824c0.680176,-14.26001 -0.699951,-28.5 -1.609863,-42.719971c-1.830078,-25.930176 -3.430176,-52.060059 -0.830078,-78c1.840088,-14.080078 6.159912,-27.970215 13.630127,-40.110107c4,-7.060059 9.539795,-13.040039 14.869873,-19.100098c9.790039,-10.089844 21.560059,-17.879883 32.840088,-26.179932c12.48999,-8.370117 25.339844,-16.379883 36.649902,-26.339844c16.550049,-13.140137 28.830078,-31.660156 34.030029,-52.170166c4.219971,-16.709961 10.780029,-32.929932 20.550049,-47.189941c7.48999,-11.350098 17.889893,-20.840088 30.109863,-26.860107z" stroke-width="0.5" stroke="#793623" fill="#793623"/>
21 <path id="svg_11" d="m-2532.52417,-2519.818848c8.309814,-1.630127 16.669922,-4.170166 25.219971,-3.450195c-20.070068,4.070068 -40.290039,8.310059 -59.149902,16.550049c-14.180176,5.370117 -27.440186,13.22998 -38.690186,23.420166c-7.540039,7.529785 -13.379883,17.139893 -14.969971,27.799805c-1.310059,9.580078 0.840088,19.170166 3.390137,28.350098c4.719971,17.26001 13.449951,33.070068 22.719971,48.23999c5.52002,9.909912 12.659912,19.22998 15.329834,30.449951c1.650146,6 0.540039,12.640137 -2.679932,17.920166c-4.080078,5.239746 -9.040039,9.889893 -14.860107,13.149902c-11.459961,6.800049 -22.669922,14.389893 -31.509766,24.48999c-11.040039,11.570068 -17.390137,27.390137 -17.72998,43.360107c-0.340088,10.809814 2.069824,21.439941 3.789795,32.050049c2.080078,11.439941 5.550049,23.659912 1.26001,35.019775c-2.799805,7.830078 -10.679932,12.150146 -18.069824,14.810059c-10.52002,4.689941 -21.870117,6.949951 -32.950195,9.890137c-16.869873,4.319824 -34.399902,7.679932 -49.629883,16.549805c-7.75,4.040039 -14.330078,11.190186 -15.97998,19.960205c-1.27002,6.259766 0.899902,12.519775 3.099854,18.309814c15.130127,30.790039 39.980225,55.740112 53.650146,87.35022c6.939941,14.939941 10.109863,32.169922 6.359863,48.399902c-2.649902,14.199951 -10.159912,27 -19,38.22998c-13.639893,17.680054 -31.909912,30.820068 -48.659912,45.300049c-20.639893,17.919922 -40.659912,36.849976 -56.969971,58.900024c-7.660156,9.589966 -14.610107,19.779907 -20.380127,30.630005c-12.049805,22.169922 -18.969971,47.329956 -18.48999,72.639893c0.560059,13.900146 2.860107,27.75 6.870117,41.080078c3.27002,10.679932 6.560059,21.359985 10.070068,31.959961c5.069824,15.73999 11.149902,31.390015 12.72998,47.980103c1.289795,12.309937 -2.030029,24.579956 -6.75,35.849976c-2.280029,4.909912 -5.150146,9.52002 -7.600098,14.359985c-4.939941,9.219971 -11.780029,17.289917 -16.379883,26.699951c-6.180176,11.080078 -10.630127,23.080078 -13.530029,35.410034c-0.300049,1.439941 0.040039,2.910034 0.22998,4.369995c-1.360107,2.599976 -2.449951,5.339966 -3.150146,8.199951c-1.280029,-1.809937 -1.859863,-3.890015 -1.289795,-6.049927c1.98999,-12.109985 4.869873,-24.219971 10.329834,-35.280029c6.130127,-15.699951 17.080078,-28.839966 24.100098,-44.089966c4.77002,-9.810059 8.909912,-20.400024 8.669922,-31.47998c0.360107,-10.290039 -1.909912,-20.440063 -5.099854,-30.150024c-3.72998,-11.290039 -7.580078,-22.52002 -11.310059,-33.800049c-8.419922,-23.089966 -15.130127,-47.280029 -14.719971,-72.060059c0.47998,-11.969971 2.149902,-23.909912 5.48999,-35.419922c6.97998,-24.330078 19.829834,-46.679932 35.639893,-66.320068c7.380127,-9.22998 14.920166,-18.399902 23.51001,-26.549927c7.459961,-7.190063 14.320068,-15.029907 22.390137,-21.569946c5.25,-4.780029 10.72998,-9.300049 16.009766,-14.040039c14.610107,-11.609985 29.410156,-23.209961 41.660156,-37.380005c8.790039,-10.530029 16.719971,-22.26001 20.100098,-35.73999c3.899902,-13.980103 2.579834,-29.079956 -2.25,-42.670044c-5.980225,-17.280029 -16.710205,-32.300049 -26.240234,-47.730103c-7.73999,-11.669922 -15.709961,-23.199951 -22.629883,-35.389893c-5.870117,-8.870117 -10.080078,-19.48999 -8.679932,-30.300049c1.439941,-9.080078 8.319824,-16.22998 15.869873,-20.899902c26.120117,-14.680176 56.919922,-16.420166 84.330078,-27.75c7.119873,-3.140137 15.040039,-8.120117 16.469971,-16.420166c1.97998,-12.51001 -2.149902,-24.77002 -4.449951,-36.929932c-1.719971,-10.51001 -4.080078,-21.169922 -2.600098,-31.850098c0.900146,-18.109863 10.380127,-34.709961 23.110107,-47.199951c7.73999,-6.379883 15.27002,-13.129883 24.159912,-17.909912c4.890137,-2.48999 9.27002,-5.850098 13.219971,-9.630127c4.25,-4.119873 6.550049,-10.580078 4.900146,-16.379883c-2.880127,-11.51001 -9.890137,-21.25 -15.820068,-31.320068c-10.090088,-16.189941 -18.219971,-33.73999 -22.77002,-52.300049c-2.060059,-8.919922 -3.610107,-18.290039 -1.659912,-27.359863c2.609863,-13.120117 10.719971,-24.830078 21.339844,-32.810059c7.450195,-6.310059 16.290039,-10.640137 24.950195,-15.030029c14.72998,-6.209961 29.969971,-11.310059 45.679932,-14.419922z" stroke-width="0.5" stroke="#7A3623" fill="#7A3623"/>
22 <path id="svg_12" d="m-2132.084229,-2456.858887c-0.02002,-1.689941 2.119873,-0.300049 2.879883,0.119873c8.01001,4.820068 14.330078,11.959961 19.140137,19.890137c10.399902,18.27002 14.060059,39.48999 14.899902,60.25c1.929932,18.949951 -0.310059,38.089844 1.670166,57.030029c-0.400146,13.809814 2.429932,27.419922 4.039795,41.089844c3.25,19.430176 7.390137,39.26001 17.930176,56.220215c5.369873,8.069824 11.51001,15.789795 19.48999,21.429932c14.189941,11.280029 31.769897,16.659912 48.76001,22.129883c20.939941,6.26001 42.929932,11.190186 61.179932,23.840088c7.550049,4.959961 13.920044,11.429932 20.48999,17.580078c5.390015,6.569824 12.089966,12.049805 16.670044,19.279785c11.829956,15.300049 20.369995,33.110107 25.119995,51.860107c5.73999,24.430054 3.849976,50.060181 -2.070068,74.260132c-1.47998,4.959961 -2.529907,10.040039 -3.929932,15.02002c-3.190063,8.800049 -5.98999,17.73999 -9.51001,26.429932c-5.130005,11.199951 -10.079956,22.689941 -12.219971,34.900024c-1.48999,6.930054 -1.23999,14.329956 1.119995,21.049927c0.859985,2.98999 2.869995,5.650146 2.880005,8.880127c-5.040039,-6.800049 -7.140015,-15.550049 -6.900024,-23.910034c-0.369995,-11.640015 3.630005,-22.819946 7.439941,-33.640015c7.27002,-17.890015 12.590088,-36.530029 16.550049,-55.419922c2.099976,-11.180054 3.5,-22.530029 3.189941,-33.920166c0.590088,-14.799927 -2.169922,-29.539917 -6.639893,-43.589966c-4.01001,-9.929932 -7.840088,-20.090088 -14.100098,-28.870117c-7.769897,-12.780029 -17.769897,-24.02002 -28.589966,-34.290039c-12.97998,-14.099854 -30.949951,-22.219971 -48.689941,-28.569824c-19.900024,-6.910156 -40.480103,-12.530029 -59.090088,-22.640137c-16.080078,-8.569824 -29.469971,-22.079834 -37.709961,-38.349854c-5.23999,-8.300049 -7.600098,-17.949951 -10.850098,-27.120117c-4.889893,-18.219971 -8.129883,-36.860107 -10.300049,-55.599854c-0.089844,-5.660156 -0.309814,-11.320068 -0.949951,-16.950195c0.02002,-10.349854 -0.23999,-20.709961 0.440186,-31.030029c-0.780029,-7.019775 -0.5,-14.079834 -0.680176,-21.119873c-1.129883,-9.72998 -1.189941,-19.630127 -3.599854,-29.179932c-2.300049,-8.850098 -4.390137,-17.969971 -9.280029,-25.840088c-4.300049,-8.550049 -11.300049,-15.429932 -18.780029,-21.219971z" stroke-width="0.5" stroke="#6D3321" fill="#6D3321"/>
23 <path id="svg_13" d="m-2181.644287,-2445.638916c0.550049,0.369873 1.659912,1.109863 2.210205,1.469971c0.439941,5.77002 0.279785,11.560059 0.129883,17.330078c0.839844,-0.47998 1.689941,-0.960205 2.560059,-1.440186c-1.950195,7.75 -6.530029,14.610107 -12.170166,20.170166c-3.780029,3.590088 -8.159912,7.040039 -13.519775,7.619873c6.179932,-2.339844 11.129883,-6.959961 14.759766,-12.399902c6.790039,-9.26001 9.490234,-21.669922 6.030029,-32.75z" stroke-width="0.5" stroke="#62270F" fill="#62270F"/>
24 <path id="svg_14" d="m-1953.244263,-2423.308838c1.099976,-1.390137 2.190063,0.969971 2.810059,1.75c7.899902,16.219971 18.539917,31.069824 31.339966,43.790039c13.150024,14.009766 29.77002,24.75 47.910034,31.039795c8.869995,3.130127 16.779907,8.290039 24.449951,13.630127c7.619995,6.679932 14.849976,13.959961 20.550049,22.389893c3.659912,6.459961 8.119995,12.600098 10.369995,19.75c10.199951,25.200195 12.01001,54.420166 1.949951,79.960205c-9.640015,18.679932 -23.699951,34.549805 -34.130005,52.759766c-2.690063,5.160156 -5.52002,10.350098 -6.949951,16.040039c-1.160034,7.560059 -1.170044,16.090088 3.809937,22.410156c4.060059,6.540039 10.849976,10.449951 16.109985,15.889893c14.869995,13.130127 28.75,27.650146 39.75,44.22998c9.930054,15.510132 16.810059,32.880127 20.170044,51.000122c2.380005,11.890015 3.349976,24.400024 -0.119995,36.179932c-5.75,21.420166 -19.369995,39.340088 -32.040039,57.110107c-3.949951,5.98999 -8.969971,11.219971 -12.449951,17.530029c-4.390015,7.439941 -9.920044,14.439941 -12.170044,22.929932c-2.410034,7.380005 -2.780029,16.340088 2.109985,22.830078c11.570068,16.309937 29.77002,26.149902 47.450073,34.579956c17.299927,8.680054 35.399902,15.769897 51.929932,25.930054c8.119995,5.279907 16.090088,11.339844 21.590088,19.429932c1.069946,1.290039 1.169922,2.98999 1.359985,4.599976c-3.700073,-6.089966 -9.090088,-10.940063 -14.48999,-15.469971c-7.430054,-5.190063 -15.540039,-9.309937 -23.610107,-13.359985c-5.549927,-1.790039 -10.630005,-4.619995 -15.880005,-7.090088c-8.359985,-3.299927 -16.679932,-6.699951 -24.869995,-10.369873c-9.799927,-5.469971 -20.429932,-9.47998 -29.439941,-16.280029c-6.219971,-4 -11.320068,-9.380005 -16.320068,-14.75c-3.419922,-4.310059 -6.889893,-9.02002 -7.369995,-14.689941c-2.419922,-9.740112 1.680054,-19.470093 5.900024,-28.080078c4.330078,-9.830078 11.26001,-18.119995 16.97998,-27.130005c12.73999,-16.77002 25.350098,-34.059937 33.200073,-53.75c3.880005,-9.5 4.829956,-19.910034 3.73999,-30.059937c-1.849976,-12.950073 -4.580078,-25.890137 -9.820068,-37.940063c-2.869995,-6.049927 -5.069946,-12.450195 -8.929932,-17.97998c-5.080078,-8.670166 -10.969971,-16.870117 -17.530029,-24.480225c-2.699951,-3.619873 -6.329956,-6.419922 -8.910034,-10.119873c-2.099976,-2.949951 -5.689941,-4.390137 -7.609985,-7.48999c-2.079956,-3.22998 -5.51001,-5.110107 -8.209961,-7.709961c-5.359985,-5.320068 -11.51001,-10.209961 -14.780029,-17.199951c-3.660034,-6.820068 -3.75,-15.110107 -1.369995,-22.350098c1.359985,-4.189941 2.619995,-8.449951 4.719971,-12.350098c5.460083,-9.079834 11.200073,-18.02002 17.470093,-26.579834c4.23999,-7.27002 9.429932,-13.930176 13.789917,-21.130127c10.320068,-17.959961 11.290039,-39.699951 7.75,-59.679932c-3.449951,-18.080078 -11.119995,-35.340088 -22.319946,-49.929932c-10.869995,-13.370117 -25.359985,-23.720215 -41.660034,-29.360107c-6.439941,-2.550049 -12.670044,-5.699951 -18.420044,-9.550049c-7.23999,-3.77002 -13.439941,-9.139893 -19.289917,-14.73999c-3.97998,-2.709961 -6.359985,-6.98999 -9.950073,-10.099854c-10.719971,-11.450195 -19.199951,-24.810059 -26.049927,-38.890137c-0.97998,-2.290039 -2.969971,-4.530029 -2.52002,-7.149902z" stroke-width="0.5" stroke="#6D3321" fill="#6D3321"/>
25 <path id="svg_15" d="m-2917.914307,-2364.128906c-0.659912,-8.370117 0,-16.939941 2.890137,-24.870117c0.72998,0.140137 2.189941,0.440186 2.909912,0.580078c-3.869873,7.530029 -5.060059,15.969971 -5.800049,24.290039z" stroke-width="0.5" stroke="#522A22" fill="#522A22"/>
26 <path id="svg_16" d="m-2788.094238,-2354.208984c2.77002,-1.349854 5.810059,-2.070068 8.890137,-2.159912c-7.650146,3.76001 -15.870117,6.839844 -22.340088,12.600098c-2.920166,2.769775 -6.550049,4.809814 -8.870117,8.169922c-3.869873,5.530029 -8.589844,10.639893 -10.819824,17.139893c-4.400146,10.030029 -6.450195,21 -6.370117,31.920166c-0.709961,30.52002 6.830078,60.319824 11.820068,90.219971c4.209961,23.540039 8.159912,47.469971 5.969971,71.459961c-0.959961,8.379883 -3.060059,16.659912 -6.590088,24.340088c-3.27002,6.639893 -8.139893,12.369873 -13.810059,17.079834c-16.939941,12.810059 -35.159912,23.900146 -51.319824,37.720093c-11.430176,10.5 -22.699951,22.220093 -27.76001,37.25c-4.679932,12.73999 -5.080078,26.630127 -3.150146,39.950073c0.350098,4.069946 1.920166,7.940063 1.950195,12.049927c-4.550049,-10.709961 -5.01001,-22.549927 -5.460205,-34.01001c0.530029,-15.969971 7.120117,-31.25 16.910156,-43.699951c14.310059,-17.880005 33.540039,-30.809937 51.849854,-44.240112c5.75,-4.560059 12.120117,-8.369873 17.120117,-13.810059c4.840088,-4.23999 7.609863,-10.22998 10.030029,-16.059814c3.959961,-12.700195 5.320068,-26.25 4.099854,-39.48999c-2.099854,-37.940186 -12.609863,-74.790039 -15.789795,-112.600098c-1.110107,-8.01001 -0.610107,-16.109863 -0.73999,-24.169922c-0.210205,-11.700195 2.72998,-23.230225 7.119873,-34c4.540039,-9.180176 10.340088,-18.100098 18.669922,-24.23999c5.420166,-4.940186 12.030029,-8.260254 18.590088,-11.420166z" stroke-width="0.5" stroke="#793623" fill="#793623"/>
27 <path id="svg_17" d="m-2155.594238,-2298.408936c-5.75,-8.48999 -6.699951,-19.419922 -4.26001,-29.189941c1.699951,11.02002 4.109863,22.099854 9.320068,32.069824c1.699951,3.840088 4.48999,7.100098 5.909912,11.070068c-4.619873,-3.77002 -7.629883,-9.099854 -10.969971,-13.949951z" stroke-width="0.5" stroke="#D28C37" fill="#D28C37"/>
28 <path id="svg_18" d="m-2481.404297,-2243.688965c6.140137,-0.649902 11.669922,-3.73999 16.070068,-7.969971c-5.119873,7.380127 -14.570068,9.920166 -23.090088,10.290039c-12.389893,0.330078 -24.889893,-2.909912 -35.560059,-9.199951c3.150146,0.389893 6.320068,2.080078 9.52002,0.969971c10.320068,4.52002 21.740234,7.51001 33.060059,5.909912z" stroke-width="0.5" stroke="#70280D" fill="#70280D"/>
29 <path id="svg_19" d="m-2085.704346,-2234.608887c-0.209961,2.280029 -1.679932,4.110107 -2.699951,6.070068c-4.419922,8.76001 -7.01001,19.169922 -3.619873,28.72998c2.01001,6.839844 7.349854,11.889893 12.389893,16.629883c6.800049,6.189941 15.120117,10.22998 23.060059,14.72998c18.409912,9.219971 37.839966,16.100098 56.609985,24.52002c10.52002,4.030029 20.469971,9.340088 30.530029,14.370117c12.319946,6.829834 24.23999,14.819824 33.880005,25.189941c6.089966,6.830078 11.309937,14.73999 13.459961,23.72998c3,10.120117 1.940063,20.949951 -0.449951,31.080078c-8.359985,35.140015 -23.300049,68.76001 -26.800049,104.98999c-0.109985,4.700073 -0.26001,9.410034 -0.669922,14.109985c0.599976,11.040039 1.759888,22.290039 5.97998,32.630127c1.679932,6.139893 4.880005,11.669922 7.549927,17.419922c5.690063,9.060059 11.5,18.22998 19.340088,25.619995c13.659912,14.150024 30.029907,25.589966 47.539917,34.450073c17.550049,9.22998 36.060059,16.569946 55.150024,21.949951c19.23999,6.790039 38.099976,14.849976 55.719971,25.209961c18.380005,10.209961 35.890015,22.290039 50.619995,37.390015c4.609985,4.140015 8.340088,9.119995 11.780029,14.26001c3.859985,5.890015 7.570068,12.859985 6.709961,20.119995c-1.48999,-4.400024 -2.159912,-9.140015 -4.769897,-13.070068c-5.320068,-8.699951 -12.02002,-16.649902 -20.140015,-22.849854c-12.040039,-10.730103 -25.73999,-19.330078 -39.580078,-27.490112c-10.359985,-5.369995 -20.699951,-10.769897 -31.329956,-15.559937c-14.599976,-5.949951 -29.339966,-11.699951 -44.640015,-15.630127c-17.51001,-6.25 -35.040039,-12.969971 -50.939941,-22.759888c-8.380005,-4.720093 -16.600098,-9.880005 -23.780029,-16.309937c-7.410034,-5.140137 -13.640015,-11.75 -19.690063,-18.390137c-21.319946,-23.179932 -32.939941,-55.549927 -29.179932,-87.030029c2.429932,-21.069946 8.179932,-41.579834 14.900024,-61.639893c5.329956,-18.140015 11.819946,-36.02002 15.019897,-54.710083c1.51001,-10.390137 0.230103,-21.320068 -4.679932,-30.679932c-2.27002,-3.670166 -4.910034,-7.090088 -7.410034,-10.600098c-7.589966,-9.27002 -17.809937,-15.860107 -28.049927,-21.850098c-6.180054,-4.219971 -13.290039,-6.679932 -19.810059,-10.280029c-23.209961,-11.169922 -47.549927,-19.859863 -70.549927,-31.5c-7.170166,-4.049805 -14.73999,-7.48999 -21.140137,-12.759766c-8.839844,-6.160156 -17.040039,-14.360107 -19.790039,-25.100098c-2.349854,-7.280029 -0.780029,-15.060059 1.709961,-22.070068c1.75,-4.72998 4.090088,-9.379883 7.77002,-12.919922z" stroke-width="0.5" stroke="#6D3321" fill="#6D3321"/>
30 <path id="svg_20" d="m-2493.484375,-2184.178955c6.350098,-1.089844 12.870117,-1.069824 19.220215,0.040039c-2.740234,0.300049 -5.490234,0.580078 -8.22998,0.719971c-0.680176,0.01001 -2.040039,0.01001 -2.720215,0.01001c-2.77002,-0.159912 -5.52002,-0.459961 -8.27002,-0.77002z" stroke-width="0.5" stroke="#E4A24F" fill="#E4A24F"/>
31 <path id="svg_21" d="m-2485.214355,-2183.408936c0.680176,0 2.040039,0 2.720215,-0.01001c23.509766,0.140137 46.819824,8.900146 64.629883,24.22998c16.949951,14.459961 29,34.650146 33.330078,56.530029l0.299805,1.080078l0.300049,0.949951c14.830078,0.77002 29.710205,0.030029 44.560059,0.219971c1.709961,-0.050049 3.610107,0.090088 5.060059,-1.040039c6.429932,-31.48999 29.01001,-59.040039 58.540039,-71.679932c22.309814,-9.790039 48.189941,-11 71.369873,-3.590088c31.25,9.77002 56.77002,35.77002 66.02002,67.160156c6.929932,23.01001 5.390137,48.469971 -4.429932,70.420044c-12.550049,28.540039 -39.02002,50.550049 -69.47998,57.389893c-23.159912,5.470093 -48.22998,2.400146 -69.360107,-8.549927c-15.049805,-7.73999 -28.119873,-19.299927 -37.560059,-33.349976c-9.839844,-14.410034 -15.659912,-31.460083 -17.039795,-48.84021c-15.530029,0.02002 -31.100098,-0.5 -46.600098,0.23999l-0.030029,0.140137c-1.73999,16 -7.030029,31.650024 -15.919922,45.100098c-11.580078,17.809937 -28.880127,31.859985 -48.76001,39.369995c-24.52002,9.409912 -52.709961,8.75 -76.73999,-1.860107c-24.719971,-10.73999 -44.72998,-31.809937 -54.110107,-57.089844c-12.409912,-32.34021 -6.619873,-70.900269 15,-98.000122c18.440186,-23.860107 48.01001,-38.649902 78.199951,-38.820068m-6.679932,14.679932c-22.070068,1.590088 -43.25,12.350098 -57.669922,29.100098c-10.540039,12.060059 -17.5,27.179932 -19.880127,43.02002c-2.539795,16.540039 -0.099854,33.800049 6.950195,48.970093c10.799805,23.52002 32.869873,41.439941 58.139893,47.089966c22.679932,5.359985 47.449951,0.829956 66.77002,-12.210083c18.110107,-12.069824 31.310059,-31.309814 35.840088,-52.619995c5.529785,-24.909912 -0.720215,-52.169922 -16.950195,-71.929932c-17.239746,-21.709961 -45.579834,-33.890137 -73.199951,-31.420166m242.880127,4.73999c-17.790039,2.920166 -34.570068,11.700195 -47.040039,24.72998c-15.73999,15.910156 -24.530029,38.340088 -24.090088,60.690186c0.190186,20.709961 8.320068,41.180054 22.360107,56.390015c12.830078,14.080078 30.530029,23.679932 49.369873,26.590088c21.25,3.47998 43.73999,-1.440063 61.52002,-13.610107c14.51001,-9.889893 25.969971,-24.290039 32.02002,-40.800171c7.890137,-21.029785 6.98999,-45.189941 -2.429932,-65.569824c-7.5,-16.350098 -20.330078,-30.160156 -36.050049,-38.880127c-16.76001,-9.429932 -36.73999,-12.619873 -55.659912,-9.540039z" stroke-width="0.5" stroke="#060709" fill="#060709"/>
32 <path id="svg_22" d="m-2491.894287,-2168.729004c27.620117,-2.469971 55.960205,9.710205 73.199951,31.420166c16.22998,19.76001 22.47998,47.02002 16.950195,71.929932c-4.530029,21.310059 -17.72998,40.550171 -35.840088,52.619995c-19.320068,13.040039 -44.090088,17.570068 -66.77002,12.210083c-25.27002,-5.650024 -47.340088,-23.569946 -58.139893,-47.089966c-7.050049,-15.170044 -9.48999,-32.430054 -6.950195,-48.970093c2.380127,-15.840088 9.340088,-30.959961 19.880127,-43.02002c14.419922,-16.75 35.599854,-27.51001 57.669922,-29.100098z" stroke-width="0.5" stroke="#FDD05D" fill="#FDD05D"/>
33 <path id="svg_23" d="m-2249.01416,-2163.989014c18.919922,-3.079834 38.899902,0.110107 55.659912,9.540039c15.719971,8.719971 28.550049,22.530029 36.050049,38.880127c9.419922,20.379883 10.320068,44.540039 2.429932,65.569824c-6.050049,16.510132 -17.51001,30.910278 -32.02002,40.800171c-17.780029,12.170044 -40.27002,17.090088 -61.52002,13.610107c-18.839844,-2.910156 -36.539795,-12.51001 -49.369873,-26.590088c-14.040039,-15.209961 -22.169922,-35.680054 -22.360107,-56.390015c-0.439941,-22.350098 8.350098,-44.780029 24.090088,-60.690186c12.469971,-13.029785 29.25,-21.809814 47.040039,-24.72998z" stroke-width="0.5" stroke="#D7B259" fill="#D7B259"/>
34 <path id="svg_24" d="m-1840.074219,-2117.378906c1.199951,-0.859863 1.97998,-0.649902 2.329956,0.650146c-1.25,0.839844 -2.02002,0.629883 -2.329956,-0.650146z" stroke-width="0.5" stroke="#935E51" fill="#935E51"/>
35 <path id="svg_25" d="m-2384.234375,-2101.578857c16.640137,0.219971 33.290039,-0.179932 49.920166,0.129883c-1.449951,1.130127 -3.350098,0.98999 -5.060059,1.040039c-14.849854,-0.189941 -29.72998,0.550049 -44.560059,-0.219971l-0.300049,-0.949951z" stroke-width="0.5" stroke="#210100" fill="#210100"/>
36 <path id="svg_26" d="m-2659.364258,-2037.558838c3.050049,2.369995 4.919922,5.819946 7.050049,8.970093c8.469971,13.279907 17.099854,26.709961 22.199951,41.719971c4.949951,13.409912 7.689941,28.319946 3.719971,42.349854c-3.339844,10.780029 -11.169922,19.230103 -18.27002,27.700073c-4.22998,4.440063 -8.72998,8.619995 -12.959961,13.069946c-12.359863,11.460083 -25.919922,21.530029 -39.399902,31.620117c-8.179932,5.719971 -15.469971,12.579956 -23.5,18.48999c-6.570068,6.099976 -13.719971,11.649902 -19.440186,18.599976c-9.319824,10.369995 -17.439941,21.920044 -23.469971,34.519897c-13.609863,29.340088 -23.659912,60.680176 -26.589844,93.01001c-0.98999,10.01001 -0.01001,20.090088 -0.72998,30.110107c-3.640137,-23.280029 -1.410156,-47.130005 3.559814,-70.050049c2.720215,-10.570068 5.060059,-21.320068 9.210205,-31.439941c5.559814,-16.670044 12.569824,-33.040039 22.699951,-47.47998c5.449951,-7.170044 11.459961,-13.890137 17.629883,-20.430054c10.070068,-9.680054 20.790039,-18.670044 32.110107,-26.859985c7.469971,-6.26001 15.709961,-11.530029 23.169922,-17.790039c8.27002,-5.630005 15.47998,-12.599976 23.199951,-18.919922c8.380127,-7.690063 15.860107,-16.290039 22.660156,-25.400146c8.819824,-11.909912 8.609863,-27.959961 5.139893,-41.75c-1.079834,-6.019897 -3.73999,-11.559937 -5.599854,-17.349854c-4.210205,-11.700073 -10.590088,-22.430054 -16.910156,-33.090088c-1.830078,-3.209961 -4.23999,-6.099976 -5.47998,-9.599976z" stroke-width="0.5" stroke="#793623" fill="#793623"/>
37 <path id="svg_27" d="m-2940.634277,-2020.708862c-3.179932,17.550049 -4.349854,35.590088 -1.589844,53.280029c-0.660156,-0.280029 -1.980225,-0.849976 -2.640137,-1.129883c-0.959961,-17.440186 -0.72998,-35.27002 4.22998,-52.150146z" stroke-width="0.5" stroke="#FFFFFF" fill="#FFFFFF"/>
38 <path id="svg_28" d="m-2033.314209,-2008.378784c2.820068,-3.02002 4.359985,-7.27002 8.090088,-9.369995c-1.840088,4.630005 -5.140137,8.430054 -7.870117,12.539917c-11.589966,16.76001 -21.850098,34.51001 -29.719971,53.320068c-1.97998,6.25 -4.360107,12.380005 -6.02002,18.72998c-2.040039,10.060059 -3.929932,20.300049 -3.51001,30.620117c0.77002,9.209961 1.48999,18.559937 4.560059,27.359863c6.300049,20.370117 16.089844,39.5 27.579956,57.400024c8.030029,10.859985 16.280029,21.660034 26.079956,31.01001c8.070068,7.980103 17.110107,14.910034 26.130005,21.790039c14.720093,10.509888 30.660034,19.170044 46.900024,27.079956c28.210083,12.800049 58.170044,20.98999 87.090088,31.939941c17.429932,6.460083 34.279907,14.450073 50.439941,23.640137c11.319946,7.389893 22.609985,15.109985 31.949951,25c19.869995,19.289917 34.670044,43.369995 44.680054,69.099976c0.890015,2.569946 2.280029,4.969971 4.359985,6.799927l0.640015,0.670044c-0.599976,-0.130005 -1.790039,-0.369995 -2.390015,-0.5c8.709961,24.170044 12.920044,50.160034 10.310059,75.809937c-2.040039,17.060059 -6.23999,34.240112 -15.23999,49.050049c-2.180054,3.430054 -3.880005,7.310059 -7.070068,9.959961c1.680054,-4.679932 4.910034,-8.559937 6.900024,-13.079956c3.160034,-7.219971 6,-14.609985 7.719971,-22.319946c4.869995,-18.130005 4.51001,-37.160034 2.339966,-55.660034c-0.849976,-8.670044 -3.089966,-17.109985 -5.519897,-25.440063c-2.340088,-9.929932 -6.600098,-19.22998 -10.320068,-28.679932c-2.380005,-6.359985 -6.309937,-11.950073 -9.089966,-18.109985c-13.550049,-24.01001 -31.940063,-45.450073 -54.440063,-61.480103c-8.769897,-6.639893 -18.76001,-11.359863 -28.319946,-16.689941c-6.810059,-3.899902 -14.23999,-6.5 -21.440063,-9.540039c-12.189941,-5.449951 -24.75,-10.02002 -37.269897,-14.659912c-7.860107,-2.640015 -15.27002,-6.459961 -23.210083,-8.860107c-11.76001,-4.639893 -23.449951,-9.469971 -34.650024,-15.359863c-34.169922,-16.720093 -66.399902,-38.650146 -91.139893,-67.820068c-6.350098,-6.530029 -11.27002,-14.219971 -16.290039,-21.76001c-4.110107,-6.97998 -8.810059,-13.659912 -11.790039,-21.219971c-3.449951,-7.390015 -6.47998,-14.959961 -9.320068,-22.600098c-4.079834,-11.5 -5.52002,-23.719971 -5.969971,-35.839844c0.73999,-8.73999 1.199951,-17.600098 3.699951,-26.060059c5.23999,-21.340088 15.930176,-40.840088 28.130127,-58.929932c4.399902,-5.910156 8.069946,-12.340088 12.98999,-17.840088z" stroke-width="0.5" stroke="#6E3321" fill="#6E3321"/>
39 <path id="svg_29" d="m-2133.50415,-1958.588745c6.969971,-14.840088 19.869873,-26.01001 34.069824,-33.72998c-2.969971,5.549927 -6.52002,10.779907 -9.179932,16.51001c-8.209961,16.73999 -12.969971,35.509888 -11.530029,54.22998c0.550049,4.399902 -0.949951,8.669922 -1.300049,13.02002c-1.139893,12.039917 0.700195,24.22998 4.540039,35.659912c3.699951,10.349976 9.090088,20.01001 12.840088,30.349976c2.570068,6.720093 4.550049,13.930054 3.349854,21.180054c-0.48999,-8.530029 -4.619873,-17.120117 -12.689941,-20.810059c2.310059,2.870117 5.410156,5.209961 6.689941,8.810059c4.040039,9.310059 -0.129883,20.560059 -7.819824,26.629883c-5.130127,4.100098 -12,5.080078 -18.370117,4.630127c3.640137,-10.050049 6.420166,-20.610107 5.800049,-31.380127c-1.199951,-22.72998 -11.860107,-43.519897 -14.959961,-65.909912c-2.830078,-20 0.149902,-40.810059 8.560059,-59.189941z" stroke-width="0.5" stroke="#D68B30" fill="#D68B30"/>
40 <path id="svg_30" d="m-2635.734131,-1884.888794c7.829834,-12.900024 12.589844,-28.47998 25.389893,-37.630005c-7.359863,15.5 -16.639893,30.02002 -24.939941,45.030029c-8.76001,15.709961 -18.060059,31.420044 -30.780029,44.289917c-7.02002,8.630127 -15.419922,15.969971 -23.080078,24c-5.669922,5.969971 -10.939941,12.300049 -16.429932,18.430054c-13.140137,16.52002 -22.5,35.910034 -27.899902,56.289917c-6.360107,23.040039 -8.490234,47.110107 -7.650146,70.950073c0.890137,6.079956 0.350098,12.25 1.26001,18.320068c1.27002,10.579956 2.01001,21.279907 4.649902,31.639893c2.100098,11.930054 7.400146,22.920044 11.77002,34.130005c4.740234,8.550049 7.870117,17.850098 12.370117,26.52002c3.560059,8.320068 6.929932,16.72998 9.890137,25.290039c4.559814,11.219971 7.299805,23.050049 10.189941,34.790039c4.72998,23.789917 5.649902,48.880005 -1.530029,72.299927c-1.410156,4.210083 -2.709961,8.469971 -4.330078,12.630005c-1.800049,4.630005 -4.560059,8.820068 -6.469971,13.410034c-2.399902,5.880005 -6.390137,10.900024 -9.689941,16.27002c-3.880127,6.309937 -8.870117,11.839966 -13.209961,17.829956c-10.01001,13.040039 -19.660156,26.51001 -26.590088,41.47998c-2.949951,8.070068 -4.939941,16.51001 -8.409912,24.390015c-0.190186,-7.959961 2.199951,-15.73999 4.599854,-23.25c12.23999,-36.790039 40.080078,-65.939941 52.110107,-102.819946c7.5,-23.640015 6.419922,-49.200073 0.419922,-73.040039c-5.75,-23.47998 -15.350098,-45.72998 -23.919922,-68.25c-7.560059,-19.26001 -13.5,-39.219971 -16.719971,-59.680054c-2.75,-19.859985 -3.02002,-39.949951 -2.440186,-59.969971c1.800049,-23.779907 4.97998,-47.559937 11.25,-70.599976c3.410156,-11.47998 7.530029,-22.869995 13.810059,-33.119995c5.22998,-9.690063 12.419922,-18.119995 19.47998,-26.5c4.390137,-3.98999 7.650146,-9.01001 12.030029,-13c5.050049,-4.960083 9.939941,-10.099976 15.050049,-15c7.320068,-5.599976 13.159912,-12.829956 20.080078,-18.880005c8.23999,-7.369995 14.209961,-16.780029 19.73999,-26.25z" stroke-width="0.5" stroke="#7A3623" fill="#7A3623"/>
41 <path id="svg_31" d="m-2409.294189,-1881.488892c20.449951,11.640137 40.639893,23.72998 60.919922,35.660034c0.73999,0.450073 1.48999,0.920044 2.25,1.400024c20.719971,-12.119995 41.060059,-24.890015 61.76001,-37.070068c-1.669922,1.900146 -3.399902,3.73999 -5.26001,5.440063c-19.5,18.470093 -37.98999,37.97998 -57.189941,56.76001c-13.280029,-13.329956 -26.639893,-26.579956 -39.850098,-39.97998c-5.619873,-5.720093 -11.050049,-11.670044 -17.149902,-16.890015c-1.969971,-1.630005 -3.780029,-3.429932 -5.47998,-5.320068z" stroke-width="0.5" stroke="#060709" fill="#060709"/>
42 <path id="svg_32" d="m-3008.564209,-1848.648804c9.820068,-3.560059 20,-6.219971 29.399902,-10.859985c-0.619873,1.25 -1.25,2.51001 -1.869873,3.779907c-9,2.940063 -18.25,5.190063 -27.530029,7.080078z" stroke-width="0.5" stroke="#522A22" fill="#522A22"/>
43 <path id="svg_33" d="m-1728.674194,-1843.798828c6.709961,-3.619995 11.869995,-9.420044 16.199951,-15.579956c-8.209961,17.129883 -28.75,27.459961 -47.329956,22.439941c1.400024,-0.310059 2.829956,-0.619995 4.27002,-0.929932c-0.97998,-0.5 -1.940063,-0.98999 -2.880005,-1.459961c0.549927,-0.090088 1.630005,-0.280029 2.179932,-0.370117c9.300049,2.030029 19.290039,0.690063 27.560059,-4.099976z" stroke-width="0.5" stroke="#562924" fill="#562924"/>
44 <path id="svg_34" d="m-2390.654297,-1841.498901c0.580078,-5.809937 0.200195,-11.75 1.939941,-17.389893c0.680176,10.439941 0.510254,20.98999 -0.929932,31.369873c-2.149902,20.200073 -7.439941,40.410156 -17.809814,58.01001c-2.090088,4 -5.780273,7.120117 -6.910156,11.610107c-5.719971,4.73999 -11.550049,9.379883 -17.72998,13.530029c-0.580078,-0.100098 -1.73999,-0.310059 -2.320068,-0.410156c5.350098,-5.579834 11.01001,-10.879883 16.150146,-16.659912c5.25,-7.050049 9.929932,-14.599976 13.409912,-22.689941c8.540039,-17.939941 11.860107,-37.790039 14.199951,-57.370117z" stroke-width="0.5" stroke="#793624" fill="#793624"/>
45 <path id="svg_35" d="m-2429.27417,-1842.508789c2.449951,-4.190063 4.26001,-8.900024 8.01001,-12.170044c-0.540039,3.930054 -3.400146,7 -4.590088,10.73999c-8.01001,16.02002 -13.060059,33.290039 -17.199951,50.660034c-3.97998,15.130005 -7.219971,30.890015 -15.910156,44.190063c-3.369873,4.859863 -6.589844,10.030029 -11.529785,13.469971c-6.290039,5.77002 -13.840088,9.919922 -21.600098,13.369995c-3.939941,1.289917 -8.140137,1.47998 -12.25,1.440063c16.320068,-5.080078 32,-14.660156 41.070068,-29.530029c11.409912,-17.76001 13.929932,-39.140137 20.300049,-58.870117c3.5,-11.5 7.819824,-22.790039 13.699951,-33.299927z" stroke-width="0.5" stroke="#793624" fill="#793624"/>
46 <path id="svg_36" d="m-2631.694336,-1838.738892c1.490234,-1.819946 4.510254,-2.809937 6.160156,-0.609863c3.310059,3.079834 -0.780029,7.76001 -4.180176,8.589844c-0.119873,0.570068 -0.239746,1.160156 -0.339844,1.76001c-5.310059,5.600098 -10.560059,11.26001 -16.070068,16.680054c-13.619873,15.369995 -26.949951,31.420044 -36.050049,49.980103c-4.809814,9.619873 -8.709961,19.799927 -10.679932,30.409912c-2.290039,9.590088 -1.869873,19.560059 -1.439941,29.330078c1.919922,13.159912 4.959961,26.309937 10.580078,38.419922c2.789795,5.310059 4.659912,11.060059 7.780029,16.199951c10.659912,18.940063 23.759766,36.330078 35.159912,54.820068c9.51001,14.299927 17.47998,29.859985 21.429932,46.679932c6.160156,24.150024 5.25,49.850098 -1.330078,73.830078c-8.549805,32.309937 -23.73999,62.309937 -33.879883,94.089966c-3.570068,10.300049 -6.550049,20.969971 -6.780029,31.949951c-0.300049,12.490112 1.850098,24.850098 3.900146,37.119995c2.949951,15.990112 6.309814,32.560059 15.809814,46.130005c2.449951,3.840088 5.530029,7.210083 8.23999,10.860107c1.719971,2.009888 0.01001,5.079956 -2.319824,5.619995c-1.780029,0.76001 -3.370117,-0.610107 -4.600098,-1.700073c-13.379883,-14.839966 -24.560059,-32.27002 -29.290039,-51.880005c-5.580078,-22.569946 -2.540039,-46.359985 3.810059,-68.439941c4.98999,-19 12.850098,-37.080078 21,-54.900024c4.52002,-8.859985 7.859863,-18.23999 11.879883,-27.319946c5.120117,-12.02002 8.77002,-24.630005 11.380127,-37.410034c1.590088,-7.25 1.449951,-14.690063 1.359863,-22.050049c-0.149902,-13.23999 -3.469971,-26.209961 -7.639893,-38.699951c-5.810059,-18.390015 -16.149902,-34.950073 -27.27002,-50.570068c-9.800049,-13.529907 -20.48999,-26.439941 -29.550049,-40.51001c-7.159912,-10.869995 -14.01001,-22.059937 -18.639893,-34.269897c-4.949951,-11.670044 -8.370117,-24.160034 -8.22998,-36.930054c-0.430176,-9.069946 0.619873,-18.200073 3.169922,-26.910034c7.699951,-25.569946 24.02002,-47.599976 42.570068,-66.379883c10.309814,-12.280029 22.909912,-22.380127 34.059814,-33.890137z" stroke-width="0.5" stroke="#7A3623" fill="#7A3623"/>
47 <path id="svg_37" d="m-1759.974243,-1834.148804c3.300049,6.390015 7.940063,12.280029 14.25,15.929932c8.439941,5.27002 18.930054,5.72998 28.52002,4.160156c-6.550049,1.929932 -13.589966,1.859863 -20.23999,0.569824c-10.290039,-2.129883 -18.950073,-9.399902 -24.02002,-18.439941c0.369995,-0.560059 1.119995,-1.669922 1.48999,-2.219971z" stroke-width="0.5" stroke="#522A22" fill="#522A22"/>
48 <path id="svg_38" d="m-2475.654297,-1806.868774c4.669922,-6.570068 8.600098,-14.01001 15.419922,-18.660034c-4.529785,8.660034 -11.059814,16.209961 -14.699951,25.380005c-4.26001,10.149902 -8.47998,20.310059 -12.599854,30.51001c-3.77002,8.659912 -8.169922,17.309937 -14.98999,24.01001c-5.679932,6.549927 -13.620117,10.639893 -21.77002,13.25c-9.140137,2.399902 -18.77002,3.849976 -28.100098,1.619873c-5.209961,-0.579834 -9.530029,-3.909912 -14.649902,-4.75c-3.540039,-2.629883 -6.429932,-5.969971 -9.370117,-9.209961c3.98999,2.030029 7.370117,5.150024 11.630127,6.650024c11.629883,4.619995 24.929932,4.890015 36.76001,0.829956c10.059814,-2.819946 19.389893,-8.949951 25.27002,-17.679932c3.969971,-5.330078 7.289795,-11.140015 9.929932,-17.22998c5.300049,-11.77002 10.439941,-23.679932 17.169922,-34.719971z" stroke-width="0.5" stroke="#793623" fill="#793623"/>
49 <path id="svg_39" d="m-2345.044189,-1817.078735c5.550049,6.48999 11.879883,12.26001 18.149902,18.049927c15.600098,14.160034 31.909912,27.52002 48.310059,40.76001c12.52002,10.210083 25.829834,19.719971 40.649902,26.329956c19.179932,8.790039 40.530029,12.360107 61.550049,11.900024c17.850098,-0.309937 35.98999,-5.5 49.949951,-16.950073c5.679932,6.570068 12.400146,12.130127 19.77002,16.700073c-10.320068,7.079956 -21.070068,13.609985 -30.659912,21.690063c-6.310059,5.319946 -13.459961,9.549927 -20.780029,13.309937c-16.090088,8.089966 -33.099854,14.190063 -50.330078,19.369995c-19.889893,5.690063 -40.189941,10.609985 -60.899902,11.920044c-6.310059,0.099976 -13.27002,0.719971 -18.900146,-2.690063c-2.689941,-1.529907 -2.179932,-5.209961 -0.589844,-7.349976c3.359863,-4.910034 7.330078,-9.390015 10.409912,-14.5c4.27002,-6.910034 8.420166,-14.640015 7.929932,-23.019897c-0.329834,-5.840088 -4,-10.960083 -8.739746,-14.150146c-7.800049,-5.429932 -17.130127,-7.97998 -26.240234,-10.169922c-12.52002,-2.919922 -25.279785,-4.52002 -38.029785,-5.939941c-1.370117,-0.170044 -2.709961,-0.320068 -4.050049,-0.450073c0.780029,-0.119995 2.329834,-0.349976 3.099854,-0.469971c0.22998,-14.599976 -0.279785,-29.200073 -0.25,-43.790039c0.180176,-13.52002 -1.859863,-27.069946 -0.349854,-40.549927z" stroke-width="0.5" stroke="#D68B30" fill="#D68B30"/>
50 <path id="svg_40" d="m-2564.814209,-1802.798828c-7.179932,-1.799927 -14.439941,-5.23999 -18.679932,-11.559937c3.009766,2.799927 6.169922,5.579956 10.079834,7.069946c11.620117,4.73999 24.530029,4.719971 36.850098,3.690063c1.77002,0.179932 3.540039,0.459961 5.320068,0.75c-2,0.289917 -3.990234,0.569946 -5.970215,0.859863c1.390137,0.440063 2.77002,0.900146 4.180176,1.330078c-10.620117,0.25 -21.430176,0.72998 -31.780029,-2.140015z" stroke-width="0.5" stroke="#6F2A08" fill="#6F2A08"/>
51 <path id="svg_41" d="m-2005.004272,-2108.878906c-3.530029,-7.26001 -10.640015,-11.800049 -17.640015,-15.26001c-14.339966,-6.879883 -30.100098,-10.080078 -44.630127,-16.52002c-13.75,-6.209961 -25.959961,-16.52002 -33.099854,-29.939941c-5.610107,-10.699951 -8.140137,-22.850098 -8.189941,-34.879883c0.530029,-6.900146 3.089844,-13.460205 3.869873,-20.340088c1.219971,-8.810059 1.870117,-18.860107 -3.639893,-26.459961c0.48999,10.079834 -0.219971,20.329834 -3.820068,29.839844c-3.040039,9.820068 -9.139893,18.610107 -10.409912,28.960205c-0.860107,5.72998 0.449951,11.72998 3.579834,16.599854c6.430176,10.310059 16.719971,17.709961 22.22998,28.659912c3.110107,5.830078 4.330078,13.01001 1.850098,19.290039c-1.629883,3.900146 -3.75,7.780029 -7.199951,10.370117c3.369873,-6.400146 8.030029,-13.350098 5.629883,-20.939941c-5.219971,-17.150146 -24.369873,-24.600098 -31.089844,-40.860107c-3.680176,-9.389893 -2.180176,-19.969971 1.199951,-29.219971c3.98999,-10.840088 8.139893,-22.110107 7.399902,-33.860107c-0.659912,-8.029785 -2.859863,-16.23999 -7.699951,-22.779785c-3.699951,-3.650146 -7.530029,-7.220215 -11.659912,-10.380127c2.77002,5.73999 7.25,10.52002 9.389893,16.600098c2.850098,6.819824 2.97998,14.829834 -0.26001,21.540039c-4.810059,10.339844 -15.050049,16.779785 -20.25,26.849854c-2.209961,4.120117 -2.030029,8.890137 -2.469971,13.409912c-1.27002,-5.669922 -0.869873,-11.789795 2,-16.929932c4.719971,-9.649902 13.870117,-16.719971 16.860107,-27.280029c1.869873,-6.359863 -0.460205,-13.069824 -4.030029,-18.369873c-10.120117,-15.030029 -26.550049,-25.370117 -33.75,-42.430176c-7.409912,-19.109863 -1.77002,-40.879883 9.550049,-57.23999c2.959961,-3.540039 3.149902,-8.27002 4.369873,-12.51001c2.139893,-7.829834 5.880127,-15.119873 10.280029,-21.899902c4.26001,-6.900146 8.179932,-14.380127 9.030029,-22.570068c1.139893,-14.399902 -4.920166,-29.530029 -16.670166,-38.219971c-10.049805,-7.610107 -23.309814,-8.469971 -33.919922,-15.040039c-10.109863,-5.629883 -17.77002,-14.699951 -23.419922,-24.639893c-3.969971,-7.51001 -10.910156,-13.110107 -18.640137,-16.400146c-3.139893,3.360107 -6.929932,6.050049 -10.029785,9.430176c-0.709961,5.099854 -1.02002,10.449951 0.189941,15.5c1.429932,4.75 6.5,6.679932 10.800049,7.98999c12.879883,3.629883 26.300049,6.359863 37.929932,13.290039c6.290039,3.889893 12.080078,9.339844 14.51001,16.5c2.399902,6.669922 1.929932,14 0.110107,20.739746c-1.950195,7.75 -6.530273,14.610107 -12.170166,20.170166c-3.780029,3.590088 -8.159912,7.040039 -13.52002,7.619873c6.179932,-2.339844 11.130127,-6.959961 14.76001,-12.399902c6.790039,-9.26001 9.48999,-21.669922 6.030029,-32.75c-3.560059,-7.570068 -10.860107,-12.379883 -18.550049,-15.050049c-10.97998,-4.02002 -22.72998,-4.919922 -34.099854,-7.320068c-6.880127,-1.48999 -13.780029,-5.129883 -17.27002,-11.47998c-2.409912,-3.98999 -3.060059,-8.659912 -3.75,-13.179932c-22.550049,11.709961 -47.790039,17.530029 -73.080078,18.699951c-9.02002,1.52002 -18.030029,3.110107 -27.179932,3.590088c-0.780029,0.830078 -2.320068,1.360107 -2.070068,2.76001c-0.25,6.699951 0.25,13.399902 0.159912,20.109863c-0.179932,6.340088 0.920166,12.640137 0.75,18.97998c0.050049,27.680176 0.72998,55.360107 0.760254,83.050049c1.25,16.930176 0.639893,33.940186 1.079834,50.900146c0.880127,13.01001 0.26001,26.070068 1.189941,39.070068c-0.070068,20.339844 1.160156,40.629883 1.100098,60.959961c0.040039,30.629883 1.540039,61.25 1.179932,91.869873c-11.040039,0.390137 -22.080078,0.190186 -33.109863,0.02002l0.299805,1.080078c16.640137,0.219971 33.290039,-0.179932 49.920166,0.129883c6.429932,-31.48999 29.01001,-59.039795 58.539795,-71.679932c22.310059,-9.790039 48.190186,-11 71.370117,-3.590088c31.25,9.77002 56.77002,35.77002 66.02002,67.160156c6.929932,23.01001 5.389893,48.469971 -4.429932,70.420044c-12.550049,28.540039 -39.02002,50.550049 -69.47998,57.390015c-23.160156,5.469971 -48.230225,2.400024 -69.360107,-8.549927c-15.050049,-7.73999 -28.120117,-19.300049 -37.560059,-33.350098c-9.839844,-14.409912 -15.659912,-31.460083 -17.040039,-48.839966c-15.529785,0.019775 -31.099854,-0.5 -46.599854,0.23999c10.73999,1.079834 21.570068,-0.300049 32.329834,0.609863c-0.029785,11.360107 1.010254,22.679932 0.820068,34.050171c0.050049,9.669922 0.199951,19.349976 0.400146,29.030029c0.899902,9.309937 0.439941,18.669922 0.629883,28.02002c0.340088,22.339844 0.649902,44.689941 0.709961,67.039917c1.25,16.619995 0.620117,33.299927 1.090088,49.950073c0.169922,4.679932 0.840088,9.359863 0.540039,14.059937c0.099854,1.569946 -0.709961,2.859985 -2.040039,3.660034c0.73999,0.449951 1.48999,0.919922 2.25,1.399902c20.719971,-12.119873 41.060059,-24.889893 61.76001,-37.069946c-1.669922,1.900024 -3.399902,3.73999 -5.26001,5.440063c11.699951,11.569946 24.26001,22.23999 36.77002,32.909912c15.959961,13.150024 33.48999,24.689941 52.780029,32.350098c11.389893,4.169922 23.540039,7.579834 35.780029,6.26001c4.829834,-0.440063 9.089844,-2.900146 13.299805,-5.100098c-3.719971,4.75 -9.719971,6.72998 -15.449951,7.72998c9.090088,2.160034 18.570068,2.199951 27.850098,1.47998c3.809814,-11.579956 5.679932,-24.109863 3.030029,-36.149902c-3.890137,-17.330078 -12.580078,-33.030029 -17.98999,-49.850098c-7.810059,-22.98999 -8.530029,-48.290039 -2.370117,-71.75c3.73999,-15.409912 11.909912,-29.589966 22.870117,-40.98999c14.469971,-15.059937 32.899902,-25.530029 51.789795,-34.050049c4.810059,-1.949951 9.590088,-3.98999 14.350098,-6.079834c9.689941,-3.77002 20.070068,-6.140137 28.840088,-11.940063c6.959961,-4.130127 13.829956,-8.560059 19.669922,-14.220215c6.170044,-6 10.340088,-13.76001 13.310059,-21.769775c2.52002,-6.880127 3.449951,-14.900146 0.089966,-21.650146zm-143.720093,296.430054c0.289063,1.198975 -0.072998,1.762085 -1.093018,1.690063c1.02002,0.071899 1.381104,-0.491089 1.093018,-1.690063c-0.174805,-0.03894 -0.335938,-0.063965 -0.483887,-0.075928c0.146973,0.011963 0.309082,0.036987 0.483887,0.075928zm-1.60083,0.415039c-0.076172,0.187988 -0.097168,0.428955 -0.062988,0.723999c-0.03418,-0.295044 -0.013184,-0.536011 0.062988,-0.723999z" stroke-width="0.5" stroke="#D68B30" fill="#D68B30"/>
52 <path id="svg_42" d="m-2344.694336,-1776.528809c0.180176,-13.52002 -1.859863,-27.069946 -0.349854,-40.549927c-0.380127,-0.47998 -1.139893,-1.450073 -1.52002,-1.930054c-10.530029,12.559937 -22.939941,23.339966 -35.23999,34.099976c-10.640137,9.26001 -21.540039,18.209961 -32.560059,27.01001c-5.719971,4.73999 -11.550049,9.380005 -17.72998,13.530029c-15.98999,11.099976 -34.040039,19.530029 -53.290039,22.97998c-16.75,3.030029 -34.189941,4.01001 -50.939941,0.439941c-11.159912,-2.449951 -21.919922,-7.209961 -30.719971,-14.559937c-3.540039,-2.630005 -6.429932,-5.970093 -9.370117,-9.210083c-12.639893,-13.02002 -22.639893,-28.329956 -31.689941,-43.97998c-4.199951,-7.119873 -7.810059,-14.569946 -12.300049,-21.48999c-1.449951,4.120117 -3.01001,8.300049 -3.419922,12.689941c0.439941,5.210083 1.909912,10.290039 3.330078,15.310059c3.149902,16.77002 7.849854,33.25 13.389893,49.380005c4.320068,11.52002 8.939941,23.380005 17.429932,32.530029c8.27002,8.529907 18.680176,14.650024 29.410156,19.579956c18.060059,8.130127 37.359863,13.180054 56.780029,16.840088c26.579834,4.829956 53.709961,7.199951 80.72998,5.689941c6.699951,-0.73999 13.76001,-0.73999 19.969971,-3.699951c5.080078,-2.430054 7.069824,-8.390015 6.899902,-13.680054c-0.290039,-11.809937 -4.599854,-23.119995 -4.709961,-34.950073c-0.060059,-5.629883 1.360107,-11.679932 5.52002,-15.72998c4.659912,-4.599854 11.340088,-6.25 17.659912,-6.97998c9.949951,-1.329956 19.960205,0.030029 29.870117,0.940063c0.780029,-0.119995 2.329834,-0.349976 3.099854,-0.470093c0.22998,-14.599854 -0.279785,-29.199951 -0.25,-43.789917z" stroke-width="0.5" stroke="#F99E2B" fill="#F99E2B"/>
53 <g id="svg_43">
54 <path id="svg_44" d="m-2346.874268,-1863.548828c-0.469971,-16.650024 0.159912,-33.329956 -1.090088,-49.950073c-0.059814,-22.349854 -0.369873,-44.699951 -0.709961,-67.039917c-0.189941,-9.349976 0.27002,-18.710083 -0.629883,-28.02002c-0.199951,-9.680054 -0.350098,-19.359985 -0.399902,-29.029907c0.189941,-11.370239 -0.850098,-22.690063 -0.820068,-34.050171c-10.76001,-0.909912 -21.590088,0.469971 -32.330078,-0.610107l-0.030029,0.140137c-1.73999,16 -7.029785,31.650024 -15.919922,45.099976c-11.580078,17.810059 -28.879883,31.860107 -48.76001,39.370117c-24.52002,9.409912 -52.709961,8.75 -76.73999,-1.860107c-24.719971,-10.73999 -44.72998,-31.809937 -54.110107,-57.089844c-12.409912,-32.34021 -6.619873,-70.900269 15,-98.000122c18.440186,-23.860107 48.01001,-38.650146 78.199951,-38.820068c-2.769775,-0.159912 -5.519775,-0.459961 -8.269775,-0.77002c6.349854,-1.089844 12.869873,-1.070068 19.219971,0.040039c-2.73999,0.300049 -5.48999,0.580078 -8.22998,0.719971c23.51001,0.140137 46.819824,8.899902 64.629883,24.22998c16.950195,14.459961 29,34.650146 33.330078,56.530029c11.030029,0.169922 22.069824,0.370117 33.109863,-0.02002c0.360107,-30.619873 -1.139893,-61.23999 -1.179932,-91.869873c0.060059,-20.330078 -1.169922,-40.620117 -1.099854,-60.959961c-0.930176,-13 -0.310059,-26.060059 -1.190186,-39.070068c-0.439941,-16.959961 0.170166,-33.970215 -1.079834,-50.900146c-0.030029,-27.689941 -0.709961,-55.369873 -0.76001,-83.050049c0.169922,-6.339844 -0.929932,-12.639893 -0.75,-18.97998c0.089844,-6.709961 -0.410156,-13.409912 -0.160156,-20.109863c-0.25,-1.400146 1.290039,-1.930176 2.070068,-2.76001c-0.439941,0.030029 -1.310059,0.099854 -1.75,0.129883c-22.609863,1.100098 -45.540039,-1.189941 -67.169922,-8.040039c-21.130127,-6.539795 -41.400146,-17.769775 -55.52002,-35.119873c-4.399902,3.27002 -9.090088,6.5 -11.959961,11.300049c-3.640137,5.909912 -7.120117,12 -11.970215,17.02002c-6.829834,7.439941 -15.75,12.679932 -25.239746,15.97998c-5.460205,12.079834 -5.650146,26.429932 -0.180176,38.539795c7.300049,16.25 20.130127,29.230225 27.610107,45.380127c5.959961,12.169922 7.52002,26.570068 3.300049,39.540039c-3.310059,11.040039 -10.580078,20.360107 -18.720215,28.310059c-7.27002,7.439941 -15.859863,14.109863 -20.369873,23.73999c-3.800049,8.109863 -3.310059,18.099854 1.429932,25.719971c5.01001,8.26001 13.219971,13.929932 21.649902,18.280029c10.320068,4.52002 21.740234,7.51001 33.060059,5.909912c6.140137,-0.649902 11.670166,-3.73999 16.070068,-7.969971c-5.119873,7.380127 -14.570068,9.919922 -23.090088,10.290039c-12.389893,0.330078 -24.889893,-2.909912 -35.559814,-9.199951c-9.580078,-5.140137 -18.080078,-13.449951 -21.110107,-24.130127c-2.119873,-8.51001 -1.320068,-17.870117 2.919922,-25.620117c7.640137,-14.419922 22.070068,-23.779785 29.590088,-38.279785c5.52002,-10.340088 6.850098,-23.070068 2.439941,-34.060059c-5.379883,-13.890137 -16.079834,-24.640137 -24.569824,-36.600098c-6.460205,-8.869873 -12.200195,-18.599854 -14.440186,-29.459961c-1.799805,-6.929932 -1.559814,-14.129883 -1.369873,-21.209961c-10.949951,7.800049 -17.209961,21.120117 -17.390137,34.439941c-0.399902,9.610107 4.140137,18.48999 8.950195,26.5c3.780029,5.840088 7.129883,12 9.369873,18.600098c3.890137,11.169922 4.649902,23.129883 4.51001,34.859863c0.199951,17.110107 -3.030029,34.630127 -11.580078,49.620117c-7.919922,14.26001 -20.319824,25.630127 -34.25,33.909912c-4.01001,2.27002 -7.119873,5.960205 -8.669922,10.300049c-3.070068,8.320068 -2,17.400146 -0.469971,25.930176c1.189941,7.01001 3.919922,13.889893 3.090088,21.119873c-0.900146,17.380127 -7.670166,34.870117 -20.810059,46.649902c-12.219971,11.910156 -28.800049,17.23999 -44.709961,22.220215c-11.100098,3.849854 -22.800049,7.429932 -31.860107,15.25c-5.73999,4.829834 -8.98999,12.429932 -8.159912,19.929932c0.929932,8.599854 4.790039,16.599854 9.349854,23.839844c7.650146,11.580078 20.22998,18.290039 31.850098,25.200195c7.649902,4.52002 15.23999,9.319946 21.820068,15.329956c6.129883,7.200073 13.030029,13.709961 19.01001,21.050049c17.589844,20.969971 32.199951,45.880005 34.969971,73.580078c3.079834,28.039917 -7.330078,55.869873 -23.209961,78.589844c-4.110107,5.52002 -5.330078,12.480103 -6.280029,19.130127c3.969971,-2.469971 8.02002,-5.370117 12.939941,-5.200073c-2.469971,1.569946 -5.179932,2.700073 -7.629883,4.290039c-5.760254,4.209961 -8.610107,12.160034 -6.350098,19.029907c2.339844,8.680054 9.98999,14.610107 17.949951,17.960083c10.429932,4.349976 21.560059,7.039917 32.830078,7.97998c0.149902,-1 0.300049,-2 0.439941,-2.97998c-7.179932,-1.799927 -14.439941,-5.23999 -18.679932,-11.559937c3.01001,2.799927 6.169922,5.579956 10.080078,7.069946c11.619873,4.73999 24.529785,4.719971 36.849854,3.690063c24.159912,-2.190063 47.610107,-9.620117 69.610107,-19.620117c15.439941,-9.359985 29.159912,-21.22998 42.629883,-33.179932c7.070068,-6.340088 14.48999,-12.370117 20.51001,-19.77002c-1.969971,-1.630005 -3.780029,-3.429932 -5.47998,-5.320068c20.449951,11.640137 40.639893,23.72998 60.919922,35.660034c1.330078,-0.799927 2.140137,-2.089966 2.040039,-3.660034c0.300049,-4.699951 -0.369873,-9.379883 -0.540039,-14.059937z" stroke-width="0.5" stroke="#F99E2B" fill="#F99E2B"/>
55 <path id="svg_45" d="m-2529.344238,-1799.988892c-1.23999,-0.22998 -2.47998,-0.469971 -3.689941,-0.669922c-10.620117,0.25 -21.430176,0.72998 -31.780029,-2.140015c-0.139893,0.97998 -0.290039,1.97998 -0.439941,2.97998c11.929932,1.390015 24.02002,1.910034 35.909912,-0.170044z" stroke-width="0.5" stroke="#F99E2B" fill="#F99E2B"/>
56 </g>
57 <path id="svg_46" d="m-2069.904297,-1764.068726c-4.909912,-8.780029 -7.570068,-18.51001 -11.47998,-27.700073c-0.080078,-1.359985 -0.189941,-2.719971 -0.320068,-4.049927c-2.409912,1.679932 -3.389893,4.569946 -4.889893,6.97998c-8.570068,15.23999 -18.689941,29.619873 -30.439941,42.569946c1.969971,4.390015 5.669922,7.920044 9.139893,11.230103c3.620117,3.019897 7.179932,6.349854 11.530029,8.299927c5.179932,-2.690063 10,-6.049927 15.080078,-8.930054c3.139893,-1.809937 6.26001,-3.639893 9.349854,-5.530029c0.910156,-4.789917 1.47998,-9.629883 2.22998,-14.429932c0.370117,-2.810059 1.660156,-5.880005 -0.199951,-8.439941z" stroke-width="0.5" stroke="#D68B30" fill="#D68B30"/>
58 <path id="svg_47" d="m-1664.824219,-1705.138794c1.400024,5.869995 3.130005,12.070068 7.459961,16.51001c3.600098,3.659912 9.460083,4.72998 14.090088,2.359985c5.169922,-2.190063 8.359985,-6.940063 11.47998,-11.349976c-2.300049,4.579956 -5.420044,9 -10.01001,11.52002c-4.700073,2.959961 -11.200073,2.809937 -15.560059,-0.699951c-5.039917,-4.01001 -7.380005,-10.350098 -9.02002,-16.370117c0.390015,-0.48999 1.170044,-1.469971 1.560059,-1.969971z" stroke-width="0.5" stroke="#522A22" fill="#522A22"/>
59 <path id="svg_48" d="m-2106.684326,-1680.578735c0.460205,-4.460083 0.219971,-9.080078 2.040039,-13.27002c1.22998,15.109985 -1.439941,30.209961 -0.47998,45.329956c0.570068,8.339966 0.550049,16.73999 1.850098,25.040039c1.969971,20.799927 9.22998,41.279907 21.689941,58.119995c5.280029,7.640015 11.459961,14.589966 17.050049,22c11.409912,14.459961 23.179932,29.339966 28.819946,47.159912c6.030029,18.030029 4.02002,37.800049 -1.699951,55.650024c-6.359985,17.710083 -16.089966,33.97998 -26.390015,49.650024c-1.679932,2.839966 -4.810059,5.449951 -4.150146,9.079956c-7.689941,10.670044 -14.51001,22.210083 -17.829834,35.050049c-3.140137,3.290039 -3.590088,8.02002 -4.709961,12.219971c-2.380127,9.200073 -2.150146,18.780029 -3.300049,28.160034c-1.060059,-4.650024 -0.780029,-9.430054 -0.689941,-14.140015c0.209961,-18.630005 7.219971,-36.369995 15.469971,-52.809937c5.47998,-9.440063 10.559814,-19.119995 16.549805,-28.25c3.680176,-6.380005 7.710205,-12.570068 10.76001,-19.300049c10.810059,-20.189941 17.110107,-43.800049 12.510132,-66.650024c-2.079956,-9.469971 -5.26001,-18.799927 -10.020142,-27.280029c-9.129883,-17.119995 -22.259766,-31.529907 -34.399902,-46.5c-5.859863,-7.419922 -11.72998,-15.019897 -15.26001,-23.859985c-3,-7.640015 -6.040039,-15.339966 -7.280029,-23.48999c-4.939941,-23.689941 -3.030029,-48.059937 -0.530029,-71.909912z" stroke-width="0.5" stroke="#6D3322" fill="#6D3322"/>
60 <path id="svg_49" d="m-2141.00415,-1680.828735c2.969971,19.179932 -3.180176,38.209961 -7.950195,56.629883c-5.839844,20.790039 -12.859863,41.800049 -12.349854,63.670044c0.189941,21.670044 4.359863,43.070068 9.899902,63.959961c2.820068,12.440063 7.51001,24.330078 11.560059,36.400024c4.120117,9.820068 7.280029,20.01001 11.090088,29.950073c5.76001,19.140015 10.549805,39.659912 6.089844,59.579956c-4.52002,19.530029 -19.099854,34.319946 -32.959961,47.859985c-6.459961,5.829956 -11.619873,13.200073 -14.369873,21.48999c-3.710205,10.170044 -2.800049,21.280029 -1.370117,31.800049c3.47998,19.22998 9.97998,38.219971 8.939941,58c-0.97998,11.880005 -4.599854,24.079956 -12.889893,32.969971c-10.22998,10.930054 -24.310059,17.22998 -38.360107,21.660034c-8.919922,3.76001 -18.459961,5.839966 -27.309814,9.780029c-5.060059,2.179932 -10.210205,4.199951 -15.02002,6.909912c-2.01001,1.090088 -3.949951,2.560059 -6.340088,2.540039c16.800049,-12.390015 37.52002,-17.290039 56.439941,-25.430054c8.580078,-3.529907 16.830078,-7.97998 23.790039,-14.169922c5.280029,-5.410034 10.050049,-11.630005 12.149902,-19c3.360107,-8.02002 2.700195,-16.830078 2.700195,-25.310059c-1.570068,-22.609985 -12.120117,-44.089966 -10.219971,-67.039917c-0.070068,-10.51001 5.039795,-20.01001 10.599854,-28.580078c8.350098,-9.939941 19.120117,-17.630005 27.02002,-27.98999c6.719971,-7.369995 11.449951,-16.579956 13.570068,-26.339966c2.079834,-7.910034 1.51001,-16.070068 0.859863,-24.109985c-2.889893,-27.050049 -16.569824,-51.070068 -25.659912,-76.26001c-3.580078,-8.090088 -6.060059,-16.599976 -8.780029,-24.98999c-3.810059,-14.050049 -7.609863,-28.150024 -9.290039,-42.640015c-1.76001,-10.27002 -1.290039,-20.700073 -1.159912,-31.060059c1,-21.279907 8.540039,-41.429932 15.550049,-61.299927c2.689941,-6.820068 4.609863,-13.900024 7.169922,-20.76001c1.600098,-8.050049 4.590088,-15.810059 5.26001,-24.030029c0.070068,-1.5 0.540039,-2.929932 1.340088,-4.189941z" stroke-width="0.5" stroke="#6E3321" fill="#6E3321"/>
61 <path id="svg_50" d="m-1631.194214,-1667.748779c8.23999,6.319946 14.02002,15.290039 18.599976,24.47998c5.070068,10.48999 8.51001,22.280029 7.070068,34.02002c-0.910034,-0.900024 -1.800049,-1.780029 -2.670044,-2.650024c0.670044,-5.579956 0.099976,-11.22998 -1.099976,-16.679932c-3.48999,-14.720093 -10.920044,-28.670044 -21.900024,-39.170044z" stroke-width="0.5" stroke="#4F2D26" fill="#4F2D26"/>
62 <path id="svg_51" d="m-2574.734131,-1648.448853c-0.27002,-5.77002 -1.980225,-11.469971 -1.23999,-17.26001c6.52002,20.300049 7.290039,42.190063 16.029785,61.829956c3.740234,9.5 9.850098,17.810059 16.090088,25.810059c6.72998,7.930054 14.52002,14.880005 21.76001,22.339966c5.699951,5.969971 12.22998,11.080078 17.870117,17.109985c5.299805,5.680054 10.889893,11.119995 15.609863,17.310059c12.52002,14.609985 21.640137,31.949951 27.820068,50.130005c3.26001,10.179932 5,20.869995 4.52002,31.589966c0.929932,31.290039 -9.690186,62.26001 -27.429932,87.820068c-20.940186,30.329956 -51.710205,53.059937 -68.780029,86.189941c-7.820068,14.140015 -12.680176,29.910034 -13.790039,46.050049c-0.810059,20.02002 5.879883,40.01001 17.909912,55.959961c2.120117,3.140015 5.169922,5.849976 5.899902,9.73999c-3.939941,-2.51001 -7.909912,-4.959961 -11.909912,-7.349976c-0.969971,-0.619995 -1.899902,-1.25 -2.849854,-1.830078c-1.800049,-5.109985 -5.950195,-8.959961 -7.709961,-14.109985c-7.910156,-15.679932 -9.850098,-33.719971 -7.970215,-51c2.640137,-17.579956 9.380127,-34.299927 18.459961,-49.48999c8.880127,-14.140015 19.140137,-27.349976 30.380127,-39.689941c14.060059,-16.099976 29.060059,-31.880005 38.719971,-51.170044c14.879883,-26.530029 20.790039,-57.939941 16.910156,-88.089966c-1.02002,-12.199951 -3.450195,-24.410034 -8.290039,-35.699951c-10.490234,-23.280029 -29.900146,-40.619995 -48.390137,-57.52002c-5.179932,-5.52002 -11.459961,-9.859985 -16.449951,-15.570068c-6.350098,-7.380005 -13.139893,-14.51001 -17.900146,-23.079956c-11.089844,-17.939941 -13.549805,-39.439941 -15.269775,-60.02002z" stroke-width="0.5" stroke="#7A3622" fill="#7A3622"/>
63 <path id="svg_52" d="m-2348.52417,-1601.658813c1.969971,-2.650024 4.539795,-4.73999 7.329834,-6.469971c0.030029,3.039917 0.070068,6.099976 -0.089844,9.159912c-6.439941,6.77002 -11.48999,14.870117 -14.919922,23.560059c-6.470215,19.199951 -4.490234,40.199951 1.619873,59.22998c3.73999,11.200073 9.070068,21.820068 15.110107,31.959961l0.219971,0.560059c0.109863,2.869995 -0.170166,5.75 -0.660156,8.589966c-6.75,-9.51001 -13.339844,-19.199951 -18.129883,-29.869995c-6.920166,-16.5 -11.310059,-34.589966 -9.440186,-52.549927c0.720215,-16.380005 8.140137,-32.040039 18.960205,-44.170044z" stroke-width="0.5" stroke="#7A3622" fill="#7A3622"/>
64 <path id="svg_53" d="m-2356.204102,-1575.408813c3.429932,-8.689941 8.47998,-16.790039 14.919922,-23.560059c-0.22998,18.150024 -0.189941,36.310059 0.069824,54.460083c1.990234,12.609985 -0.259766,25.439941 1.570068,38.069946c0.570068,7.390015 0.140137,14.810059 0.170166,22.219971c-6.040039,-10.139893 -11.370117,-20.759888 -15.110107,-31.959961c-6.110107,-19.030029 -8.090088,-40.030029 -1.619873,-59.22998z" stroke-width="0.5" stroke="#6A2819" fill="#6A2819"/>
65 <path id="svg_54" d="m-2339.25415,-1483.658813c9.51001,13.930054 19.859863,27.300049 31.149902,39.849976c6.060059,5.950073 11.090088,12.849976 17.5,18.47998c12.170166,13 23.969971,26.530029 33.159912,41.869995c11.190186,18.080078 18.830078,39.050049 18.340088,60.540039c0.820068,19.23999 -6.579834,38.780029 -20.47998,52.190063c-3.23999,4.059937 -6.949951,7.689941 -11.199951,10.689941c-12.52002,10.890015 -26.899902,19.25 -40.580078,28.540039c-7.52002,5.689941 -16.02002,10.219971 -22.629883,17.039917c-0.25,-1.269897 -0.5,-2.51001 -0.76001,-3.719971c-0.370117,-0.119995 -1.100098,-0.349976 -1.469971,-0.459961c0.879883,-0.780029 1.759766,-1.540039 2.659912,-2.280029c7.590088,-6.48999 15.880127,-12.069946 24,-17.849976c7.880127,-4.630005 14.949951,-10.469971 22.689941,-15.300049c13.460205,-9.949951 27.120117,-20.859985 34.790039,-36.109985c5.5,-10.169922 7.48999,-21.880005 7.030029,-33.339966c0.189941,-15.390015 -3.040039,-30.829956 -9.52002,-44.780029c-3.97998,-10.040039 -10.070068,-19.02002 -16.129883,-27.869995c-8.860107,-12.900024 -19.850098,-24.099976 -30.800049,-35.209961c-6.580078,-7.76001 -14.360107,-14.420044 -20.76001,-22.349976c-5.950195,-6.080078 -11.169922,-12.810059 -16.439941,-19.480103c-0.430176,-0.639893 -0.820068,-1.269897 -1.209961,-1.859985c0.489746,-2.839966 0.769775,-5.719971 0.659912,-8.589966z" stroke-width="0.5" stroke="#6D3322" fill="#6D3322"/>
66 <path id="svg_55" d="m-2339.364258,-1457.518799c0.050049,-5.23999 -0.560059,-10.540039 0.659912,-15.689941c5.27002,6.669922 10.48999,13.399902 16.440186,19.47998c6.399902,7.929932 14.179932,14.589966 20.759766,22.349976c10.950195,11.109985 21.940186,22.309937 30.800049,35.209961c6.060059,8.849976 12.150146,17.830078 16.130127,27.869995c6.47998,13.950073 9.709961,29.390015 9.52002,44.780029c0.459961,11.459961 -1.530029,23.170044 -7.030029,33.339966c-7.670166,15.25 -21.330078,26.160034 -34.790039,36.109985c-7.73999,4.830078 -14.810059,10.670044 -22.689941,15.300049c-8.120117,5.780029 -16.409912,11.359985 -24,17.849976c-3.630127,-3.160034 -1.540039,-8.549927 -1.830078,-12.689941c-0.139893,-12.640015 0.689941,-25.349976 -0.899902,-37.920044c-0.170166,-10.679932 0.059814,-21.349976 -0.100098,-32.02002c-0.199951,-10.97998 0.670166,-22.01001 -0.860107,-32.919922c-0.329834,-14 0.040039,-28.02002 -0.129883,-42.02002c-2.330078,-18.23999 0.370117,-36.73999 -1.959961,-54.97998c-0.179932,-8.02002 0.050049,-16.040039 -0.02002,-24.050049z" stroke-width="0.5" stroke="#60261A" fill="#60261A"/>
67 <path id="svg_56" d="m-2029.50415,-1291.438843c8.389893,4.369995 17.889893,5.550049 27.179932,6.420044c-9.27002,0.679932 -18.75,0.089966 -27.580078,-2.970093c0.100098,-0.869873 0.300049,-2.589966 0.400146,-3.449951z" stroke-width="0.5" stroke="#522A22" fill="#522A22"/>
68 <path id="svg_57" d="m-2336.224121,-1218.638794c0.369873,0.109985 1.099854,0.339966 1.469971,0.459961c0.26001,1.210083 0.51001,2.450073 0.76001,3.720093l-0.530029,0.569946c-7.650146,6.910034 -15.050049,14.650024 -18.719971,24.469971c-1.77002,5.320068 -3.340088,10.920044 -2.75,16.590088c0.659912,9.359985 4.059814,18.279907 8.25,26.599976c5.649902,12.429932 11.909912,24.679932 15.290039,37.98999c0.099854,0.359985 0.279785,1.069946 0.379883,1.429932c-0.23999,1.430054 -0.47998,2.930054 -0.75,4.400024c-2.370117,-12.47998 -8.379883,-23.72998 -13.580078,-35.169922c-5.25,-10.890015 -12.060059,-21.560059 -12.859863,-33.950073c-1.220215,-11.280029 2.629883,-22.650024 9.179932,-31.76001c4.159912,-5.5 8.369873,-11.089966 13.860107,-15.349976z" stroke-width="0.5" stroke="#793624" fill="#793624"/>
69 <path id="svg_58" d="m-2353.244141,-1189.418823c3.669922,-9.819946 11.069824,-17.560059 18.719971,-24.469971c0.310059,9.449951 0.040039,18.909912 0.169922,28.369995c2.110107,19.539917 0.150146,39.26001 1.25,58.859985c0.880127,6.099976 0.840088,12.26001 0.650146,18.420044c-3.380127,-13.310059 -9.640137,-25.560059 -15.290039,-37.990112c-4.189941,-8.319946 -7.590088,-17.23999 -8.25,-26.599976c-0.590088,-5.669922 0.97998,-11.269897 2.75,-16.589966z" stroke-width="0.5" stroke="#6A281A" fill="#6A281A"/>
70 <path id="svg_59" d="m-2161.384277,-1171.438843c4.650146,-5.050049 9.290039,-10.109985 14.030029,-15.069946c-3.600098,5.859985 -8.330078,11.179932 -14.030029,15.069946z" stroke-width="0.5" stroke="#FFFFFF" fill="#FFFFFF"/>
71 <path id="svg_60" d="m-2660.194336,-1181.698853c6.810059,6.640015 13.280029,14.130005 16.390137,23.280029c1.76001,4.839966 1.300049,10.099976 0.97998,15.150024c-0.409912,-4.630005 -0.140137,-9.420044 -1.890137,-13.800049c-3.289795,-8.560059 -9.889893,-15.300049 -16.669922,-21.22998c0.360107,-0.130005 1.080078,-0.390015 1.439941,-0.52002c-0.079834,-0.97998 -0.159912,-1.939941 -0.25,-2.880005z" stroke-width="0.5" stroke="#562924" fill="#562924"/>
72 <path id="svg_61" d="m-2554.374268,-1161.178833c4,2.390015 7.969971,4.839966 11.909912,7.349976c13.100098,9.060059 26.170166,18.349976 37.580078,29.530029c2.680176,2.930054 5.27002,5.949951 7.890137,8.969971c-3.420166,-1.209961 -6.5,-3.109985 -9.680176,-4.789917l0.22998,1.5c-12.349854,-12.290039 -27.059814,-21.800049 -40.779785,-32.420044c-2.310059,-3.449951 -5.77002,-6.130005 -7.150146,-10.140015z" stroke-width="0.5" stroke="#D7CECC" fill="#D7CECC"/>
73 <path id="svg_62" d="m-2504.884277,-1124.298828c2.430176,0.290039 4.820068,1.02002 6.810059,2.51001c3.810059,2.73999 8.189941,4.469971 12.280029,6.72998c10.360107,6.01001 21.52002,10.430054 32.099854,16.030029c16.870117,8.939941 33.940186,18.650024 46.680176,33.169922c10.129883,11.280029 16.72998,25.620117 18.409912,40.700073c-2.060059,-1.48999 -2.129883,-4.170044 -2.780029,-6.380005c-2.76001,-11.640015 -8.439941,-22.609985 -16.75,-31.25c-13.819824,-15.109985 -32.159912,-25.089966 -50.580078,-33.459961c-8.359863,-4.52002 -17.339844,-7.730103 -25.669922,-12.280029c-3.109863,-1.690063 -6.280029,-3.430054 -9.849854,-3.869995c-0.920166,-1 -1.860107,-1.959961 -2.76001,-2.930054c-2.620117,-3.019897 -5.209961,-6.039917 -7.890137,-8.969971z" stroke-width="0.5" stroke="#793623" fill="#793623"/>
74 <path id="svg_63" d="m-2321.174316,-1088.788818c0.469971,0.660034 0.969971,1.339966 1.48999,2.02002c0.420166,-0.47998 1.26001,-1.459961 1.679932,-1.950073c-2.25,8.540039 -1.889893,18.200073 3.100098,25.73999c4.310059,6.870117 12.48999,11.02002 20.580078,10.470093c6.869873,-0.130005 13.01001,-3.550049 18.780029,-6.930054c-5.870117,4.77002 -13.179932,7.98999 -20.820068,8.160034c-8.070068,0.089966 -16.050049,-4.070068 -20.51001,-10.819946c-5.300049,-7.720093 -6.26001,-17.710083 -4.300049,-26.690063z" stroke-width="0.5" stroke="#522A22" fill="#522A22"/>
75 <path id="svg_64" d="m-2589.624268,-1030.368774c-7.579834,-11.27002 -12.349854,-26.25 -6.5,-39.310059c0.72998,1.25 1.469971,2.52002 2.209961,3.820068c-5.27002,11.679932 -0.780029,24.599976 4.290039,35.48999z" stroke-width="0.5" stroke="#5F2E22" fill="#5F2E22"/>
76 <path id="svg_65" d="m-2448.604248,-1051.088867c1.070068,7.630005 -0.310059,15.869995 -5.560059,21.77002c-0.329834,-0.469971 -0.98999,-1.420044 -1.320068,-1.890015c3.890137,-5.430054 4.710205,-12.310059 3.720215,-18.77002c0.639893,1.060059 1.299805,2.130005 1.98999,3.219971c0.399902,-1.449951 0.780029,-2.939941 1.169922,-4.329956z" stroke-width="0.5" stroke="#5D2C20" fill="#5D2C20"/>
77 <path id="svg_66" d="m-2379.174316,-951.248779c0.650146,-2.079956 2.52002,-0.569946 3.780029,-0.369995c7.26001,3.059937 15.47998,1.939941 22.709961,-0.599976c-0.320068,0.569946 -0.969971,1.709961 -1.289795,2.279907c1.329834,0.370117 2.649902,0.720093 4.019775,1.160034c-9.419922,2.849976 -21.01001,3.880005 -29.219971,-2.469971z" stroke-width="0.5" stroke="#622B21" fill="#622B21"/>
78 </g>
79 </g>
80 <path id="svg_67" fill=" rgb(51, 51, 51)" d="m289.930511,36.080215c0,-2.10022 0.741211,-3.912231 2.223694,-5.436005c1.523987,-1.482483 3.335999,-2.223724 5.436035,-2.223724c2.141541,0 3.953552,0.741241 5.436035,2.223724c1.482483,1.523773 2.223694,3.335785 2.223694,5.436005l0,92.844177l53.742188,0c2.100464,0 3.912476,0.741425 5.436035,2.223907c1.482483,1.482483 2.223755,3.294495 2.223755,5.436005c0,2.10025 -0.741272,3.912262 -2.223755,5.436005c-1.52356,1.482483 -3.335571,2.223755 -5.436035,2.223755l-61.401917,0c-1.111877,0 -2.120789,-0.185303 -3.026794,-0.555969c-0.906006,-0.411865 -1.709106,-0.967834 -2.409241,-1.667786c-0.700134,-0.700134 -1.255859,-1.503174 -1.667969,-2.40918c-0.370605,-0.906006 -0.555725,-1.914948 -0.555725,-3.026825l0,-100.504089zm173.277222,67.641052c0,11.283752 -3.953491,20.83786 -11.860229,28.662384c-7.989258,7.90686 -17.543579,11.860413 -28.662537,11.860413c-11.201538,0 -20.755493,-3.953552 -28.662598,-11.860413c-7.906677,-7.906891 -11.860229,-17.461029 -11.860229,-28.662384c0,-11.201385 3.953552,-20.755676 11.860229,-28.662567c7.907104,-7.947968 17.46106,-11.922058 28.662598,-11.922058c11.118958,0 20.673279,3.974091 28.662537,11.922058c3.953552,3.953552 6.918518,8.318787 8.895264,13.095947c1.935303,4.776978 2.923889,9.965851 2.964966,15.56662m-40.522766,-25.450256c-3.582947,0 -6.918518,0.679382 -10.007141,2.038391c-3.088623,1.359009 -5.765503,3.191559 -8.030334,5.497864c-2.265198,2.264984 -4.056458,4.941711 -5.374207,8.030365c-1.318115,3.088623 -1.976746,6.383087 -1.976746,9.883636c0,3.459259 0.65863,6.733185 1.976746,9.821808c1.317749,3.088623 3.109009,5.786102 5.374207,8.092194c2.264832,2.265015 4.941711,4.077026 8.030334,5.436005c3.088623,1.359009 6.424194,2.038422 10.007141,2.038422c3.541443,0 6.856628,-0.679413 9.945313,-2.038422c3.088623,-1.358978 5.765503,-3.191559 8.030334,-5.497833c2.306274,-2.306091 4.118286,-4.982819 5.436035,-8.030365c1.318054,-3.088623 1.976746,-6.362549 1.976746,-9.821808c0,-3.500549 -0.658691,-6.774475 -1.976746,-9.821808c-1.317749,-3.047546 -3.129761,-5.744812 -5.436035,-8.092194c-2.264832,-2.306305 -4.941711,-4.138855 -8.030334,-5.497864c-3.088684,-1.359009 -6.40387,-2.038391 -9.945313,-2.038391zm97.651459,0c-3.582886,0 -6.918457,0.679382 -10.00708,2.038391c-3.088623,1.359009 -5.765625,3.191559 -8.030396,5.497864c-2.265137,2.264984 -4.056519,4.941711 -5.374146,8.030365c-1.318115,3.088623 -1.976807,6.383087 -1.976807,9.883636c0,3.459259 0.658691,6.733185 1.976807,9.821808c1.317627,3.088623 3.109009,5.786102 5.374146,8.092194c2.264771,2.265015 4.941772,4.077026 8.030396,5.436005c3.088623,1.359009 6.424194,2.038422 10.00708,2.038422c3.541504,0 6.856689,-0.679413 9.945313,-2.038422c3.088623,-1.358978 5.765503,-3.191559 8.030396,-5.497833c2.306274,-2.306091 4.118286,-4.982819 5.435913,-8.030365c1.318115,-3.088623 1.976807,-6.362549 1.976807,-9.821808c0,-3.500549 -0.658691,-6.774475 -1.976807,-9.821808c-1.317627,-3.047546 -3.129639,-5.744812 -5.435913,-8.092194c-2.264893,-2.306305 -4.941772,-4.138855 -8.030396,-5.497864c-3.088623,-1.359009 -6.403809,-2.038391 -9.945313,-2.038391m25.388428,57.077789c-7.206543,5.930115 -15.669678,8.895264 -25.388428,8.895264c-11.201538,0 -20.755493,-3.953552 -28.662567,-11.860413c-7.906677,-7.906891 -11.860229,-17.461029 -11.860229,-28.662384c0,-11.201385 3.953552,-20.755676 11.860229,-28.662567c7.907074,-7.947968 17.461029,-11.922058 28.662567,-11.922058c11.119019,0 20.67334,3.974091 28.662598,11.922058c7.906616,7.906891 11.860229,17.461182 11.860229,28.662567l0,40.21402c0,3.500305 -0.5354,6.7948 -1.606201,9.883423c-1.029297,3.088623 -2.491333,5.909607 -4.38562,8.463013c-1.894531,2.59436 -4.118286,4.921204 -6.671509,6.980164c-2.553223,2.100403 -5.312378,3.850586 -8.27771,5.250671c-2.964966,1.441406 -6.074341,2.553284 -9.327637,3.335815c-3.212036,0.782471 -6.445068,1.173645 -9.697998,1.173645c-3.830322,0 -7.618652,-0.514832 -11.366333,-1.544312c-3.706177,-0.988342 -7.227295,-2.429749 -10.563232,-4.324158c-3.335571,-1.935486 -6.383148,-4.323975 -9.142242,-7.165649c-2.759094,-2.882568 -5.106506,-6.07428 -7.042175,-9.574646c-0.782349,-1.111877 -1.173706,-2.470886 -1.173706,-4.077026c0,-2.141296 0.720886,-3.9328 2.162292,-5.374146c1.441406,-1.441406 3.253418,-2.162109 5.436035,-2.162109c1.441345,0 2.635437,0.350098 3.58252,1.050232c0.947449,0.658875 2.244415,2.141357 3.891754,4.447632c1.647217,2.347168 3.088623,4.118103 4.324097,5.312317c5.518188,5.518433 12.148682,8.277527 19.890991,8.277527c7.824463,0 14.434204,-2.718018 19.828735,-8.153992c3.335938,-4.035767 5.00354,-7.968567 5.00354,-11.798401l0,-8.586487zm99.628174,8.895264c-2.182617,0 -3.973877,-0.720703 -5.374146,-2.162109c-1.400269,-1.441345 -2.120728,-3.212097 -2.161865,-5.312317c-3.335938,2.63562 -6.857056,4.530029 -10.563232,5.682983c-3.706177,1.194214 -7.74231,1.791443 -12.107544,1.791443c-5.147583,0 -10.007202,-1.008972 -14.578247,-3.026794c-4.612183,-1.976807 -8.627563,-4.674225 -12.045654,-8.092194c-3.417847,-3.459259 -6.135864,-7.47464 -8.154053,-12.045746c-1.97644,-4.571106 -2.964966,-9.451172 -2.964966,-14.640045l0,-35.766388c0,-2.059143 0.720825,-3.829865 2.162231,-5.312347c1.482544,-1.482666 3.294434,-2.223907 5.435669,-2.223907c2.059326,0 3.8302,0.741241 5.312744,2.223907c1.482422,1.482483 2.223633,3.253204 2.223633,5.312347l0,35.766388c0,3.1297 0.576538,6.07431 1.729492,8.833405c1.194458,2.759125 2.820923,5.168335 4.880249,7.227478c2.05896,2.05896 4.447388,3.665131 7.165405,4.818268c2.759155,1.194244 5.703735,1.79126 8.833496,1.79126c3.088623,0 6.012451,-0.597015 8.771973,-1.79126c2.759033,-1.153137 5.168335,-2.779846 7.227295,-4.880096c2.099976,-2.059143 3.726929,-4.447632 4.879883,-7.165649c1.194458,-2.759094 1.791626,-5.703705 1.791626,-8.833405l0,-35.766388c0,-2.059143 0.741211,-3.829865 2.223755,-5.312347c1.482422,-1.482666 3.273682,-2.223907 5.374146,-2.223907c2.100464,0 3.870972,0.741241 5.312378,2.223907c1.482422,1.482483 2.223755,3.253204 2.223755,5.312347l0,66.034882c0,2.10025 -0.741333,3.871185 -2.223755,5.312531c-1.441406,1.482483 -3.232666,2.223755 -5.374268,2.223755zm38.798706,-73.571167l0,1.482483c3.624023,-2.923859 7.556763,-5.147583 11.79834,-6.671356c4.241577,-1.56485 8.771606,-2.347382 13.590088,-2.347382c2.141479,0 4.427124,0.164764 6.856689,0.494293c2.429565,0.288239 4.67395,0.802887 6.733398,1.544312c2.05896,0.741241 3.767944,1.770721 5.126831,3.088623c1.318115,1.276611 1.976685,2.964966 1.976685,5.065216c0,1.029663 -0.185059,2.018036 -0.555664,2.965149c-0.412109,0.906006 -0.967896,1.709076 -1.667969,2.40921c-0.659058,0.699951 -1.462158,1.235352 -2.409302,1.605957c-0.906006,0.411926 -1.894165,0.617767 -2.964966,0.617767c-0.906006,0 -1.955933,-0.2677 -3.150391,-0.80307c-3.047607,-1.235352 -6.362427,-1.853088 -9.945313,-1.853088c-3.500366,0 -6.795166,0.679382 -9.883789,2.038391c-3.088745,1.317902 -5.786011,3.129913 -8.092285,5.436035c-2.305908,2.264984 -4.11792,4.941711 -5.436035,8.030334c-1.317627,3.088654 -1.976318,6.40387 -1.976318,9.945496l0,32.986511c0,2.10025 -0.741577,3.871185 -2.224121,5.312531c-1.441406,1.482483 -3.211914,2.223755 -5.312378,2.223755c-2.099976,0 -3.891724,-0.741272 -5.374146,-2.223755c-1.482544,-1.441345 -2.223755,-3.21228 -2.223755,-5.312531l0,-66.034882c0,-2.059143 0.741211,-3.829865 2.223755,-5.312347c1.482422,-1.482666 3.27417,-2.223907 5.374146,-2.223907c2.100464,0 3.870972,0.741241 5.312378,2.223907c1.482544,1.482483 2.224121,3.253204 2.224121,5.312347zm127.551025,73.571167c-2.182617,0 -3.973877,-0.720703 -5.374146,-2.162109c-1.400269,-1.441345 -2.12085,-3.212097 -2.161865,-5.312317c-3.335938,2.63562 -6.857056,4.530029 -10.563232,5.682983c-3.706299,1.194214 -7.74231,1.791443 -12.107544,1.791443c-5.147705,0 -10.007202,-1.008972 -14.578247,-3.026794c-4.612305,-1.976807 -8.627563,-4.674225 -12.045776,-8.092194c-3.417725,-3.459259 -6.135742,-7.47464 -8.154053,-12.045746c-1.976318,-4.571106 -2.964966,-9.451172 -2.964966,-14.640045l0,-35.766388c0,-2.059143 0.720947,-3.829865 2.162354,-5.312347c1.482422,-1.482666 3.294434,-2.223907 5.435547,-2.223907c2.059326,0 3.830322,0.741241 5.312744,2.223907c1.482544,1.482483 2.223755,3.253204 2.223755,5.312347l0,35.766388c0,3.1297 0.576416,6.07431 1.72937,8.833405c1.194458,2.759125 2.821045,5.168335 4.880371,7.227478c2.05896,2.05896 4.447388,3.665131 7.165405,4.818268c2.759155,1.194244 5.703735,1.79126 8.833496,1.79126c3.088623,0 6.012451,-0.597015 8.771973,-1.79126c2.759033,-1.153137 5.168213,-2.779846 7.227173,-4.880096c2.100098,-2.059143 3.727051,-4.447632 4.880005,-7.165649c1.194336,-2.759094 1.791626,-5.703705 1.791626,-8.833405l0,-35.766388c0,-2.059143 0.741211,-3.829865 2.223633,-5.312347c1.482544,-1.482666 3.273804,-2.223907 5.374268,-2.223907c2.100464,0 3.870972,0.741241 5.312378,2.223907c1.482422,1.482483 2.223633,3.253204 2.223633,5.312347l0,66.034882c0,2.10025 -0.741211,3.871185 -2.223633,5.312531c-1.441406,1.482483 -3.232666,2.223755 -5.374268,2.223755z"/>
81 <path id="svg_68" fill=" rgb(51, 51, 51)" d="m256.352386,219.466721l0,-25.925171l10.726074,0c1.125854,0 2.155396,0.238281 3.08844,0.715027c0.933167,0.476746 1.744629,1.095459 2.434387,1.856201c0.679565,0.770813 1.212036,1.643066 1.597473,2.61676c0.395569,0.973755 0.593384,1.957642 0.593384,2.951599c0,1.075134 -0.182556,2.104675 -0.547668,3.088562c-0.365234,0.983887 -0.87738,1.856079 -1.536682,2.616821c-0.659302,0.75061 -1.445374,1.359131 -2.358215,1.825745c-0.912903,0.456421 -1.927124,0.684631 -3.042847,0.684631l-8.398376,0l0,9.569824l-2.555969,0m2.555969,-11.836792l8.276611,0c0.760742,0 1.450378,-0.162231 2.069153,-0.486816c0.618713,-0.324646 1.146179,-0.760681 1.582214,-1.308472c0.446289,-0.547729 0.791199,-1.181641 1.034668,-1.901794c0.243408,-0.720154 0.365173,-1.470642 0.365173,-2.251709c0,-0.80127 -0.142029,-1.562012 -0.426086,-2.282166c-0.283936,-0.720093 -0.659302,-1.343933 -1.125854,-1.871277c-0.476746,-0.537598 -1.039673,-0.958557 -1.688721,-1.262817c-0.638977,-0.304321 -1.313538,-0.456421 -2.02356,-0.456421l-8.063599,0l0,11.821472zm19.182678,17.679077c0.192688,0.020264 0.380371,0.040527 0.562927,0.060852c0.182556,0.010132 0.359985,0.015259 0.532471,0.015259c0.436157,0 0.781006,-0.060974 1.034546,-0.182617c0.263733,-0.121704 0.517334,-0.390564 0.760681,-0.806396c0.24353,-0.415833 0.517334,-1.014282 0.821655,-1.795288c0.304199,-0.770813 0.735352,-1.815613 1.293213,-3.134094l-8.29187,-19.017944l2.55603,0l7.04425,16.72052l6.542114,-16.72052l2.373535,0l-9.858948,24.525513c-0.273865,0.710022 -0.720154,1.328735 -1.338867,1.856201c-0.618713,0.517212 -1.465637,0.775818 -2.540771,0.775818c-0.243408,0 -0.471619,-0.005005 -0.684692,-0.015137c-0.223145,-0.010193 -0.491882,-0.040588 -0.806274,-0.091248l0,-2.190918zm26.419067,-6.755127c-0.141968,0.070923 -0.35498,0.167358 -0.638977,0.289063c-0.283936,0.121643 -0.608582,0.243408 -0.973694,0.365112c-0.365173,0.121643 -0.776001,0.233276 -1.232361,0.334717c-0.466553,0.091248 -0.95343,0.136963 -1.460632,0.136963c-0.537598,0 -1.049683,-0.071045 -1.53656,-0.213013c-0.486877,-0.142029 -0.912903,-0.365173 -1.278076,-0.669434c-0.365112,-0.304321 -0.659302,-0.689697 -0.882446,-1.156311c-0.212891,-0.466553 -0.319397,-1.00415 -0.319397,-1.612732l0,-13.616821l-2.632141,0l0,-1.962646l2.632141,0l0,-6.435608l2.479919,0l0,6.435608l4.381714,0l0,1.962646l-4.381714,0l0,12.932129c0.05072,0.69989 0.299194,1.217224 0.745483,1.551941c0.456421,0.324524 0.973755,0.486877 1.551819,0.486877c0.709961,0 1.333801,-0.116638 1.871399,-0.349915c0.527466,-0.223145 0.867249,-0.385498 1.019348,-0.486877l0.654175,2.008301zm18.676575,0.912842l-2.47998,0l0,-10.619568c0,-2.170654 -0.370178,-3.793457 -1.110596,-4.868652c-0.740479,-1.065002 -1.830811,-1.597473 -3.271118,-1.597473c-0.710022,0 -1.40979,0.136902 -2.099548,0.410767c-0.689697,0.284058 -1.338867,0.669434 -1.947388,1.15625c-0.608643,0.486877 -1.141113,1.059937 -1.597534,1.719238c-0.446289,0.659302 -0.781006,1.374329 -1.00415,2.145264l0,11.654175l-2.47998,0l0,-26.655518l2.47998,0l0,11.943298c0.760681,-1.440308 1.810486,-2.571228 3.149353,-3.392883c1.338867,-0.831665 2.784241,-1.247498 4.33606,-1.247498c1.095459,0 2.023499,0.20282 2.784241,0.608521c0.75061,0.395569 1.369324,0.95343 1.856201,1.673645c0.486755,0.720093 0.841797,1.582214 1.064941,2.586365c0.213013,1.014282 0.319519,2.130005 0.319519,3.347168l0,11.136902zm12.330322,0.365112c-1.389587,0 -2.65741,-0.263733 -3.803589,-0.791199c-1.146179,-0.517212 -2.13501,-1.227234 -2.966797,-2.129944c-0.841858,-0.90271 -1.496094,-1.947449 -1.962585,-3.134155c-0.456421,-1.196838 -0.684692,-2.45459 -0.684692,-3.773132c0,-1.338867 0.233276,-2.601624 0.69989,-3.788391c0.476685,-1.196838 1.135986,-2.246582 1.977844,-3.149414c0.841858,-0.892456 1.835876,-1.607605 2.981934,-2.145142c1.136108,-0.537598 2.388672,-0.806335 3.757996,-0.806335c1.359131,0 2.616821,0.268738 3.773132,0.806335c1.156311,0.537537 2.155396,1.252686 2.997253,2.145142c0.841919,0.902832 1.501099,1.952576 1.977844,3.149414c0.466553,1.186768 0.69989,2.449524 0.69989,3.788391c0,1.318542 -0.22821,2.576294 -0.684631,3.773132c-0.466614,1.186707 -1.12085,2.231445 -1.962708,3.134155c-0.831665,0.90271 -1.825684,1.612732 -2.981934,2.129944c-1.156311,0.527466 -2.42926,0.791199 -3.818848,0.791199m-6.907288,-9.782837c0,1.065063 0.182617,2.053955 0.547729,2.966858c0.365112,0.912781 0.856995,1.719238 1.475708,2.419006c0.628906,0.689758 1.359253,1.232361 2.190918,1.62793c0.841858,0.385498 1.739563,0.578186 2.692932,0.578186c0.943298,0 1.835876,-0.20282 2.677734,-0.608521c0.841858,-0.39563 1.577148,-0.943298 2.206116,-1.643188c0.638977,-0.689758 1.141052,-1.496094 1.506165,-2.419128c0.365173,-0.922913 0.547729,-1.921997 0.547729,-2.997192c0,-1.044739 -0.182556,-2.038757 -0.547729,-2.981995c-0.365112,-0.933167 -0.867188,-1.744568 -1.506165,-2.434265c-0.628967,-0.69989 -1.364258,-1.24762 -2.206116,-1.643188c-0.841858,-0.405701 -1.734436,-0.608582 -2.677734,-0.608582c-0.953369,0 -1.840942,0.202881 -2.662476,0.608582c-0.831787,0.395569 -1.562012,0.948425 -2.190918,1.658386c-0.638916,0.699829 -1.141052,1.521484 -1.506165,2.464722c-0.365112,0.933167 -0.547729,1.937256 -0.547729,3.01239zm35.182129,9.417725l-2.479919,0l0,-10.619568c0,-2.272034 -0.334717,-3.915222 -1.00415,-4.929443c-0.669434,-1.024475 -1.698975,-1.536682 -3.088562,-1.536682c-0.730225,0 -1.46051,0.131897 -2.190857,0.39563c-0.730225,0.273804 -1.404785,0.654175 -2.023499,1.141052c-0.618652,0.486755 -1.171448,1.064941 -1.658325,1.734375c-0.486877,0.669434 -0.841858,1.389526 -1.065002,2.160461l0,11.654175l-2.47998,0l0,-19.017944l2.266968,0l0,4.305725c0.781006,-1.389587 1.891663,-2.510437 3.331909,-3.362427c1.4505,-0.85199 3.027649,-1.277954 4.73175,-1.277954c1.044678,0 1.932129,0.192688 2.662476,0.578064c0.730286,0.395569 1.318542,0.943359 1.764832,1.643188c0.436157,0.710022 0.75061,1.577209 0.943298,2.601685c0.192688,1.024414 0.289063,2.155273 0.289063,3.392761l0,11.136902zm11.76178,-26.655518l2.479919,0l0,22.349792c0,0.69989 0.197815,1.252686 0.593384,1.658447c0.385376,0.405701 0.933167,0.608521 1.643066,0.608521c0.263733,0 0.578186,-0.040527 0.943359,-0.121704c0.365173,-0.070984 0.704895,-0.167419 1.019348,-0.289063l0.441162,2.008301c-0.45636,0.192688 -1.019287,0.349915 -1.688721,0.47168c-0.669434,0.121643 -1.24762,0.182556 -1.734497,0.182556c-1.146057,0 -2.048889,-0.31958 -2.708069,-0.958496c-0.659302,-0.649231 -0.988953,-1.556946 -0.988953,-2.72345l0,-23.186584zm17.408203,27.02063c-1.389526,0 -2.657349,-0.263733 -3.803589,-0.791199c-1.146179,-0.517212 -2.13501,-1.227234 -2.966797,-2.129944c-0.841858,-0.90271 -1.496094,-1.947449 -1.962585,-3.134155c-0.456421,-1.196838 -0.684692,-2.45459 -0.684692,-3.773132c0,-1.338867 0.233276,-2.601624 0.69989,-3.788391c0.476685,-1.196838 1.135986,-2.246582 1.977844,-3.149414c0.841919,-0.892456 1.835876,-1.607605 2.981995,-2.145142c1.136047,-0.537598 2.388611,-0.806335 3.757935,-0.806335c1.359131,0 2.616821,0.268738 3.773132,0.806335c1.156311,0.537537 2.155396,1.252686 2.997253,2.145142c0.841919,0.902832 1.501099,1.952576 1.977844,3.149414c0.466553,1.186768 0.69989,2.449524 0.69989,3.788391c0,1.318542 -0.22821,2.576294 -0.684631,3.773132c-0.466614,1.186707 -1.12085,2.231445 -1.962708,3.134155c-0.831665,0.90271 -1.825623,1.612732 -2.981934,2.129944c-1.156311,0.527466 -2.42926,0.791199 -3.818848,0.791199m-6.907227,-9.782837c0,1.065063 0.182556,2.053955 0.547668,2.966858c0.365112,0.912781 0.856995,1.719238 1.475769,2.419006c0.628845,0.689758 1.359192,1.232361 2.190857,1.62793c0.841858,0.385498 1.739563,0.578186 2.692932,0.578186c0.943298,0 1.835876,-0.20282 2.677734,-0.608521c0.841919,-0.39563 1.577148,-0.943298 2.206116,-1.643188c0.638977,-0.689758 1.141052,-1.496094 1.506226,-2.419128c0.365112,-0.922913 0.547668,-1.921997 0.547668,-2.997192c0,-1.044739 -0.182556,-2.038757 -0.547668,-2.981995c-0.365173,-0.933167 -0.867249,-1.744568 -1.506226,-2.434265c-0.628967,-0.69989 -1.364197,-1.24762 -2.206116,-1.643188c-0.841858,-0.405701 -1.734436,-0.608582 -2.677734,-0.608582c-0.953369,0 -1.840942,0.202881 -2.662476,0.608582c-0.831787,0.395569 -1.562012,0.948425 -2.190857,1.658386c-0.638977,0.699829 -1.141113,1.521484 -1.506226,2.464722c-0.365112,0.933167 -0.547668,1.937256 -0.547668,3.01239zm26.829407,9.676331c-1.318604,0 -2.520508,-0.273865 -3.605774,-0.821533c-1.085266,-0.547729 -2.023499,-1.272949 -2.814697,-2.175659c-0.791077,-0.90271 -1.404724,-1.937256 -1.840881,-3.10376c-0.436157,-1.166443 -0.654175,-2.373474 -0.654175,-3.620972c0,-1.308472 0.212891,-2.566162 0.638977,-3.773193c0.425903,-1.20697 1.029419,-2.26178 1.810486,-3.164612c0.780945,-0.892456 1.709106,-1.607605 2.784241,-2.145142c1.085266,-0.537598 2.28717,-0.806335 3.605774,-0.806335c1.632996,0 3.042908,0.405701 4.229553,1.217102c1.196899,0.821594 2.221313,1.851135 3.073303,3.088501l0,-3.970947l2.221313,0l0,19.093994c0,1.308411 -0.248535,2.469788 -0.745544,3.484131c-0.497009,1.014221 -1.166443,1.861206 -2.008301,2.540771c-0.841797,0.679565 -1.825623,1.191772 -2.951477,1.536621c-1.136108,0.334717 -2.337952,0.502014 -3.605896,0.502014c-2.190857,0 -3.955688,-0.390442 -5.294556,-1.171448c-1.338867,-0.770935 -2.419006,-1.815613 -3.240662,-3.134155l1.521423,-1.201965c0.760742,1.217224 1.759827,2.10968 2.997253,2.677734c1.24762,0.578186 2.586365,0.867249 4.016541,0.867249c0.923035,0 1.800354,-0.131897 2.632141,-0.39563c0.831665,-0.253479 1.556885,-0.628845 2.175659,-1.125793c0.618713,-0.497009 1.110596,-1.130981 1.475708,-1.901794c0.365234,-0.760742 0.547791,-1.65332 0.547791,-2.677734l0,-3.757935c-0.730347,1.217163 -1.729431,2.175659 -2.997253,2.875427c-1.267822,0.710022 -2.591492,1.065063 -3.970947,1.065063m0.684692,-2.084351c0.730225,0 1.450378,-0.131897 2.1604,-0.39563c0.69989,-0.273804 1.338867,-0.63385 1.916992,-1.080139c0.567993,-0.456421 1.049805,-0.963623 1.445435,-1.521423c0.385315,-0.557922 0.638977,-1.130981 0.760681,-1.719238l0,-5.872681c-0.263733,-0.679688 -0.628845,-1.313538 -1.095459,-1.901794c-0.466553,-0.578186 -0.988892,-1.075134 -1.567017,-1.491089c-0.588379,-0.415833 -1.217224,-0.745483 -1.886658,-0.988892c-0.669434,-0.243469 -1.343933,-0.365173 -2.023438,-0.365173c-1.075134,0 -2.028687,0.223145 -2.860291,0.669434c-0.841919,0.456482 -1.556946,1.049744 -2.145325,1.780151c-0.578125,0.730225 -1.019287,1.556885 -1.323608,2.479919c-0.304321,0.922913 -0.456421,1.861206 -0.456421,2.814575c0,1.024475 0.182556,1.99823 0.547668,2.921143c0.365173,0.923035 0.867249,1.72937 1.506226,2.419128c0.64917,0.69989 1.39978,1.247559 2.25177,1.643188c0.85199,0.405701 1.774963,0.608521 2.769043,0.608521zm20.694885,2.084351c-1.318665,0 -2.520569,-0.273865 -3.605774,-0.821533c-1.085266,-0.547729 -2.02356,-1.272949 -2.814758,-2.175659c-0.791077,-0.90271 -1.404663,-1.937256 -1.84082,-3.10376c-0.436218,-1.166443 -0.654236,-2.373474 -0.654236,-3.620972c0,-1.308472 0.212952,-2.566162 0.638977,-3.773193c0.425964,-1.20697 1.02948,-2.26178 1.810486,-3.164612c0.781006,-0.892456 1.709106,-1.607605 2.784241,-2.145142c1.085266,-0.537598 2.28717,-0.806335 3.605835,-0.806335c1.632935,0 3.042847,0.405701 4.229492,1.217102c1.196899,0.821594 2.221375,1.851135 3.073364,3.088501l0,-3.970947l2.221313,0l0,19.093994c0,1.308411 -0.248596,2.469788 -0.745605,3.484131c-0.496948,1.014221 -1.166382,1.861206 -2.008301,2.540771c-0.841797,0.679565 -1.825623,1.191772 -2.951477,1.536621c-1.136047,0.334717 -2.337952,0.502014 -3.605896,0.502014c-2.190857,0 -3.955688,-0.390442 -5.294556,-1.171448c-1.338867,-0.770935 -2.419006,-1.815613 -3.240662,-3.134155l1.521484,-1.201965c0.760681,1.217224 1.759766,2.10968 2.997253,2.677734c1.247559,0.578186 2.586365,0.867249 4.016479,0.867249c0.923035,0 1.800415,-0.131897 2.632141,-0.39563c0.831665,-0.253479 1.556946,-0.628845 2.175659,-1.125793c0.618713,-0.497009 1.110596,-1.130981 1.475769,-1.901794c0.365173,-0.760742 0.547729,-1.65332 0.547729,-2.677734l0,-3.757935c-0.730347,1.217163 -1.729431,2.175659 -2.997253,2.875427c-1.267822,0.710022 -2.591431,1.065063 -3.970886,1.065063m0.684631,-2.084351c0.730286,0 1.450378,-0.131897 2.1604,-0.39563c0.69989,-0.273804 1.338867,-0.63385 1.917053,-1.080139c0.567932,-0.456421 1.049805,-0.963623 1.445374,-1.521423c0.385376,-0.557922 0.638977,-1.130981 0.760681,-1.719238l0,-5.872681c-0.263672,-0.679688 -0.628845,-1.313538 -1.095459,-1.901794c-0.466553,-0.578186 -0.988892,-1.075134 -1.567017,-1.491089c-0.588379,-0.415833 -1.217224,-0.745483 -1.886658,-0.988892c-0.669434,-0.243469 -1.343872,-0.365173 -2.023438,-0.365173c-1.075134,0 -2.028625,0.223145 -2.860291,0.669434c-0.841858,0.456482 -1.556885,1.049744 -2.145264,1.780151c-0.578186,0.730225 -1.019348,1.556885 -1.323669,2.479919c-0.30426,0.922913 -0.456421,1.861206 -0.456421,2.814575c0,1.024475 0.182617,1.99823 0.547729,2.921143c0.365112,0.923035 0.867188,1.72937 1.506165,2.419128c0.649231,0.69989 1.399841,1.247559 2.251831,1.643188c0.85199,0.405701 1.774902,0.608521 2.768982,0.608521zm13.057251,1.825745l0,-19.017944l2.47998,0l0,19.017944l-2.47998,0m0,-23.004089l0,-3.651428l2.47998,0l0,3.651428l-2.47998,0zm23.241882,23.004089l-2.479919,0l0,-10.619568c0,-2.272034 -0.334717,-3.915222 -1.00415,-4.929443c-0.669434,-1.024475 -1.698975,-1.536682 -3.088501,-1.536682c-0.730286,0 -1.460571,0.131897 -2.190918,0.39563c-0.730225,0.273804 -1.404785,0.654175 -2.023499,1.141052c-0.618652,0.486755 -1.171448,1.064941 -1.658325,1.734375c-0.486877,0.669434 -0.841858,1.389526 -1.065002,2.160461l0,11.654175l-2.47998,0l0,-19.017944l2.266968,0l0,4.305725c0.781006,-1.389587 1.891663,-2.510437 3.331909,-3.362427c1.4505,-0.85199 3.027649,-1.277954 4.73175,-1.277954c1.044678,0 1.932129,0.192688 2.662476,0.578064c0.730286,0.395569 1.318542,0.943359 1.764832,1.643188c0.436157,0.710022 0.75061,1.577209 0.943298,2.601685c0.192688,1.024414 0.289063,2.155273 0.289063,3.392761l0,11.136902zm11.858704,0.258606c-1.318604,0 -2.520508,-0.273865 -3.605774,-0.821533c-1.085266,-0.547729 -2.02356,-1.272949 -2.814697,-2.175659c-0.791077,-0.90271 -1.404724,-1.937256 -1.840881,-3.10376c-0.436157,-1.166443 -0.654236,-2.373474 -0.654236,-3.620972c0,-1.308472 0.212952,-2.566162 0.638977,-3.773193c0.425964,-1.20697 1.02948,-2.26178 1.810547,-3.164612c0.780945,-0.892456 1.709106,-1.607605 2.784241,-2.145142c1.085266,-0.537598 2.28717,-0.806335 3.605774,-0.806335c1.632935,0 3.042847,0.405701 4.229553,1.217102c1.196838,0.821594 2.221313,1.851135 3.073303,3.088501l0,-3.970947l2.221313,0l0,19.093994c0,1.308411 -0.248596,2.469788 -0.745544,3.484131c-0.497009,1.014221 -1.166443,1.861206 -2.008301,2.540771c-0.841797,0.679565 -1.825684,1.191772 -2.951538,1.536621c-1.136047,0.334717 -2.337952,0.502014 -3.605835,0.502014c-2.190918,0 -3.955688,-0.390442 -5.294556,-1.171448c-1.338867,-0.770935 -2.419067,-1.815613 -3.240662,-3.134155l1.521423,-1.201965c0.760681,1.217224 1.759766,2.10968 2.997253,2.677734c1.24762,0.578186 2.586365,0.867249 4.016541,0.867249c0.923035,0 1.800354,-0.131897 2.632141,-0.39563c0.831665,-0.253479 1.556885,-0.628845 2.175598,-1.125793c0.618774,-0.497009 1.110657,-1.130981 1.475769,-1.901794c0.365234,-0.760742 0.547791,-1.65332 0.547791,-2.677734l0,-3.757935c-0.730347,1.217163 -1.729431,2.175659 -2.997314,2.875427c-1.267822,0.710022 -2.591431,1.065063 -3.970886,1.065063m0.684692,-2.084351c0.730225,0 1.450378,-0.131897 2.1604,-0.39563c0.69989,-0.273804 1.338867,-0.63385 1.916992,-1.080139c0.568054,-0.456421 1.049805,-0.963623 1.445374,-1.521423c0.385376,-0.557922 0.638977,-1.130981 0.760742,-1.719238l0,-5.872681c-0.263733,-0.679688 -0.628845,-1.313538 -1.09552,-1.901794c-0.466492,-0.578186 -0.988831,-1.075134 -1.567017,-1.491089c-0.588379,-0.415833 -1.217224,-0.745483 -1.886658,-0.988892c-0.669434,-0.243469 -1.343872,-0.365173 -2.023438,-0.365173c-1.075134,0 -2.028625,0.223145 -2.860291,0.669434c-0.841858,0.456482 -1.556885,1.049744 -2.145264,1.780151c-0.578125,0.730225 -1.019348,1.556885 -1.323608,2.479919c-0.304321,0.922913 -0.456421,1.861206 -0.456421,2.814575c0,1.024475 0.182556,1.99823 0.547668,2.921143c0.365112,0.923035 0.867249,1.72937 1.506226,2.419128c0.64917,0.69989 1.39978,1.247559 2.25177,1.643188c0.85199,0.405701 1.774963,0.608521 2.769043,0.608521zm48.79007,1.825745l-2.47998,0l0,-10.619568c0,-2.221375 -0.35498,-3.854309 -1.064941,-4.899109c-0.699951,-1.044678 -1.744629,-1.567017 -3.134155,-1.567017c-0.730225,0 -1.420044,0.131897 -2.069092,0.39563c-0.63916,0.273804 -1.232422,0.654175 -1.780151,1.141052c-0.547729,0.486755 -1.029541,1.064941 -1.445313,1.734375c-0.415894,0.669434 -0.735352,1.404785 -0.958496,2.206055l0,11.608582l-2.47998,0l0,-10.619568c0,-2.272034 -0.339722,-3.915222 -1.019409,-4.929443c-0.679565,-1.024475 -1.724243,-1.536682 -3.134155,-1.536682c-1.440308,0 -2.718262,0.497009 -3.833984,1.490967c-1.125854,1.00415 -1.932251,2.317627 -2.419067,3.940552l0,11.654175l-2.47998,0l0,-19.017944l2.266968,0l0,4.305725c0.781006,-1.460632 1.800415,-2.601685 3.058105,-3.423279c1.267944,-0.811401 2.667603,-1.217102 4.199097,-1.217102c1.612793,0 2.900879,0.451294 3.86438,1.354004c0.953613,0.90271 1.54187,2.084351 1.765015,3.544983c1.775024,-3.266052 4.21936,-4.898987 7.333252,-4.898987c1.075195,0 1.983032,0.192688 2.723389,0.578064c0.740479,0.395569 1.338867,0.953491 1.795288,1.673645c0.446289,0.710022 0.775879,1.572144 0.988892,2.586426c0.202881,1.014221 0.304321,2.140076 0.304321,3.377563l0,11.136902zm8.736938,0.365112c-0.892578,0 -1.724365,-0.1521 -2.495239,-0.456421c-0.770752,-0.304321 -1.440186,-0.72522 -2.008301,-1.262817c-0.567871,-0.537598 -1.01416,-1.161316 -1.338867,-1.871338c-0.314331,-0.720154 -0.471558,-1.496094 -0.471558,-2.32782c0,-0.821533 0.197754,-1.587341 0.593384,-2.297302c0.385376,-0.710022 0.933105,-1.318604 1.643188,-1.825745c0.699707,-0.507202 1.536621,-0.90271 2.510254,-1.186768c0.973755,-0.283936 2.043823,-0.425903 3.210327,-0.425903c0.973633,0 1.962524,0.086121 2.966675,0.258606c0.994141,0.172424 1.881592,0.415833 2.662476,0.730225l0,-1.719177c0,-1.673584 -0.476563,-3.002319 -1.430054,-3.986145c-0.943359,-0.994019 -2.256714,-1.491028 -3.940552,-1.491028c-0.973755,0 -1.972778,0.197815 -2.997192,0.593384c-1.014282,0.385376 -2.048828,0.943298 -3.10376,1.673584l-0.867188,-1.643188c2.45459,-1.653198 4.838135,-2.479858 7.150757,-2.479858c2.383545,0 4.26001,0.669373 5.629272,2.00824c1.359131,1.338867 2.038696,3.189941 2.038696,5.553223l0,8.580933c0,0.679565 0.304321,1.019287 0.912964,1.019287l0,2.190918c-0.416016,0.070984 -0.730347,0.106506 -0.943359,0.106506c-0.639038,0 -1.130981,-0.157227 -1.47583,-0.47168c-0.35498,-0.314392 -0.547729,-0.750549 -0.578125,-1.308411l-0.060791,-1.506287c-0.882446,1.146179 -1.988037,2.02356 -3.316772,2.632141c-1.318604,0.608521 -2.748779,0.912842 -4.290405,0.912842m0.593384,-1.901794c1.288086,0 2.474854,-0.243408 3.560059,-0.730286c1.085327,-0.486816 1.90686,-1.13092 2.464722,-1.932251c0.213013,-0.223145 0.375366,-0.461487 0.486938,-0.715027c0.111572,-0.253601 0.167236,-0.491943 0.167236,-0.715088l0,-3.103699c-0.831665,-0.314453 -1.688721,-0.557922 -2.571045,-0.730286c-0.892578,-0.162292 -1.800415,-0.243469 -2.723511,-0.243469c-1.754639,0 -3.179688,0.365173 -4.275146,1.09552c-1.095459,0.730225 -1.643188,1.688721 -1.643188,2.875427c0,0.588257 0.116699,1.136047 0.349976,1.643127c0.233276,0.517334 0.547729,0.963623 0.943237,1.338928c0.405762,0.375244 0.887573,0.6745 1.445435,0.897644c0.557861,0.212952 1.15625,0.319458 1.795288,0.319458zm21.456055,1.901794c-1.318604,0 -2.535767,-0.273865 -3.651489,-0.821533c-1.125854,-0.547729 -2.089355,-1.272949 -2.890625,-2.175659c-0.801392,-0.90271 -1.430176,-1.942383 -1.886597,-3.119019c-0.446289,-1.176514 -0.669434,-2.413879 -0.669434,-3.712219c0,-1.338867 0.218018,-2.60675 0.654175,-3.803528c0.436157,-1.207031 1.039551,-2.261902 1.810547,-3.164612c0.770874,-0.90271 1.683594,-1.612732 2.738525,-2.130066c1.05481,-0.527466 2.216187,-0.791077 3.484009,-0.791077c1.612793,0 3.037842,0.420837 4.275269,1.262695c1.237427,0.841919 2.211182,1.856201 2.921265,3.042908l0,-11.608521l2.479858,0l0,23.445313c0,0.679565 0.294189,1.019287 0.882446,1.019287l0,2.190918c-0.365112,0.070984 -0.659302,0.106506 -0.882446,0.106506c-0.578125,0 -1.090332,-0.187683 -1.536621,-0.562927c-0.436157,-0.375366 -0.654175,-0.831787 -0.654175,-1.369324l0,-1.85614c-0.75061,1.237366 -1.77002,2.221252 -3.058105,2.951599c-1.29834,0.730286 -2.637207,1.095398 -4.016602,1.095398m0.547729,-2.190857c0.608521,0 1.25769,-0.121765 1.947388,-0.365173c0.689697,-0.243347 1.338867,-0.578125 1.947388,-1.004089c0.608643,-0.426025 1.125854,-0.923035 1.55188,-1.491028c0.426025,-0.578186 0.689697,-1.196838 0.79126,-1.85614l0,-5.872681c-0.24353,-0.659302 -0.598511,-1.272949 -1.065063,-1.841003c-0.456421,-0.578125 -0.983887,-1.085266 -1.582397,-1.521423c-0.598389,-0.436157 -1.237305,-0.77594 -1.91687,-1.019348c-0.679688,-0.243469 -1.349121,-0.365173 -2.008301,-0.365173c-1.024414,0 -1.94751,0.218079 -2.769043,0.654297c-0.831787,0.436035 -1.546753,1.014221 -2.145264,1.734314c-0.598389,0.720154 -1.05481,1.541809 -1.369263,2.464722c-0.314331,0.923035 -0.471558,1.87146 -0.471558,2.845154c0,1.024353 0.182495,1.998108 0.547607,2.921143c0.365112,0.933167 0.862183,1.744568 1.490967,2.434265c0.63916,0.689758 1.389648,1.242493 2.251831,1.658386c0.862061,0.415833 1.795288,0.623779 2.799438,0.623779zm21.519287,2.190857c-1.389526,0 -2.662476,-0.263733 -3.818726,-0.791199c-1.156372,-0.517212 -2.1604,-1.232361 -3.012451,-2.145142c-0.852051,-0.912842 -1.516357,-1.967773 -1.993042,-3.164612c-0.466675,-1.186707 -0.699951,-2.464722 -0.699951,-3.833984c0,-1.338867 0.233276,-2.596558 0.699951,-3.773193c0.476685,-1.186646 1.135986,-2.221252 1.977783,-3.103699c0.841919,-0.892578 1.846069,-1.597473 3.012451,-2.114807c1.166382,-0.527466 2.434326,-0.791077 3.803589,-0.791077c1.379395,0 2.647217,0.263611 3.803589,0.791077c1.15625,0.517334 2.150269,1.227356 2.982056,2.130066c0.831665,0.90271 1.475708,1.937256 1.932129,3.103699c0.466553,1.166382 0.699829,2.408875 0.699829,3.727478c0,0.192688 0,0.385498 0,0.578186c0,0.192688 -0.015137,0.329651 -0.045532,0.410828l-16.279419,0c0.071045,1.014221 0.309326,1.957458 0.715088,2.829834c0.39563,0.862122 0.912964,1.607605 1.55188,2.23645c0.628906,0.639038 1.354126,1.13092 2.175659,1.47583c0.811401,0.35498 1.678589,0.532471 2.601685,0.532471c0.608521,0 1.217163,-0.086182 1.825684,-0.258606c0.608521,-0.162354 1.171509,-0.390503 1.688843,-0.684692c0.50708,-0.294067 0.968628,-0.654175 1.384399,-1.080261c0.415894,-0.425903 0.730347,-0.892578 0.943359,-1.399658l2.1604,0.578125c-0.294189,0.710022 -0.709961,1.348999 -1.247559,1.917053c-0.537598,0.567993 -1.15625,1.065002 -1.856201,1.490967c-0.709961,0.426025 -1.490967,0.755676 -2.342896,0.988953c-0.852051,0.233276 -1.739624,0.349915 -2.662598,0.349915m7.013794,-10.878174c-0.071045,-1.024475 -0.309326,-1.957642 -0.714966,-2.7995c-0.405762,-0.841858 -0.917969,-1.567139 -1.536743,-2.175659c-0.618652,-0.608582 -1.333862,-1.0802 -2.145264,-1.414917c-0.821533,-0.344849 -1.693848,-0.517334 -2.616821,-0.517334c-0.922974,0 -1.800293,0.172485 -2.63208,0.517334c-0.821533,0.334717 -1.546753,0.806335 -2.175659,1.414917c-0.618652,0.608521 -1.115723,1.338867 -1.490967,2.190918c-0.375244,0.85199 -0.598389,1.780029 -0.669434,2.784241l13.981934,0zm11.217041,-2.114807c0,-1.24762 0.131836,-2.474854 0.39563,-3.681885c0.263672,-1.196838 0.628784,-2.388611 1.095337,-3.575378c0.466675,-1.176575 1.009155,-2.358215 1.62793,-3.544983c0.618774,-1.176575 1.283081,-2.36322 1.993042,-3.56012l1.886597,0.912842c-0.486816,0.730347 -1.00415,1.633057 -1.551758,2.708191c-0.547729,1.075134 -1.049805,2.221252 -1.506226,3.438477c-0.466675,1.217102 -0.852051,2.464661 -1.156372,3.742615c-0.304199,1.278076 -0.456299,2.500305 -0.456299,3.666748c0,1.896667 0.415771,3.970886 1.247437,6.222595c0.821655,2.25177 1.952637,4.473022 3.392822,6.663879l-1.856201,0.988953c-1.541626,-2.292236 -2.779053,-4.609985 -3.71228,-6.952942c-0.933105,-2.35321 -1.399658,-4.696167 -1.399658,-7.028992zm16.66272,12.992981c-1.480835,0 -2.926147,-0.243408 -4.33606,-0.730286c-1.419922,-0.486877 -2.637207,-1.191772 -3.651367,-2.114807l1.125732,-1.688782c1.075195,0.882507 2.165527,1.541687 3.271118,1.977844c1.105591,0.436218 2.292358,0.654236 3.560181,0.654236c1.531494,0 2.753784,-0.309326 3.666626,-0.92804c0.912842,-0.618774 1.369263,-1.501221 1.369263,-2.647278c0,-0.537598 -0.121704,-0.983887 -0.365112,-1.338867c-0.243408,-0.34491 -0.603516,-0.654236 -1.0802,-0.92804c-0.476685,-0.263733 -1.070068,-0.502136 -1.780151,-0.715149c-0.720093,-0.20282 -1.556885,-0.415833 -2.510376,-0.638977c-1.095337,-0.263733 -2.043701,-0.527466 -2.845093,-0.791199c-0.80127,-0.273804 -1.465576,-0.578125 -1.993042,-0.912781c-0.517212,-0.34491 -0.907715,-0.765869 -1.171387,-1.262817c-0.253662,-0.497009 -0.380371,-1.125854 -0.380371,-1.886597c0,-0.943237 0.187622,-1.780029 0.562866,-2.510376c0.385376,-0.730286 0.897583,-1.33374 1.536743,-1.810486c0.649048,-0.476685 1.404663,-0.836792 2.266846,-1.0802c0.862183,-0.243469 1.780029,-0.365112 2.753784,-0.365112c1.460571,0 2.789307,0.238281 3.986206,0.715027c1.186646,0.476746 2.145142,1.100525 2.875488,1.871338l-1.202026,1.460632c-0.699707,-0.730286 -1.556885,-1.278076 -2.571167,-1.643188c-1.014282,-0.365112 -2.069092,-0.547729 -3.164551,-0.547729c-0.64917,0 -1.257813,0.071045 -1.825684,0.213074c-0.557983,0.131836 -1.049805,0.344788 -1.47583,0.638977c-0.426025,0.283936 -0.760742,0.654175 -1.00415,1.110596c-0.243408,0.446289 -0.365112,0.973755 -0.365112,1.582336c0,0.517212 0.086182,0.933167 0.258667,1.24762c0.172363,0.314392 0.451294,0.588257 0.83667,0.821533c0.39563,0.233215 0.887573,0.441162 1.47583,0.623718c0.598511,0.182556 1.32373,0.370239 2.175659,0.562927c1.217163,0.294189 2.287231,0.583252 3.210205,0.867249c0.933228,0.294189 1.709106,0.639038 2.327881,1.034546c0.618652,0.385437 1.085205,0.857117 1.399658,1.415039c0.314453,0.5578 0.47168,1.242432 0.47168,2.053894c0,1.744568 -0.669434,3.129028 -2.008301,4.153442c-1.338867,1.024475 -3.139282,1.536682 -5.401123,1.536682zm19.338867,-1.277954c-0.141968,0.070923 -0.35498,0.167358 -0.638916,0.289063c-0.284058,0.121643 -0.608643,0.243408 -0.973755,0.365112c-0.365112,0.121643 -0.776001,0.233276 -1.232422,0.334717c-0.466553,0.091248 -0.953369,0.136963 -1.460571,0.136963c-0.537598,0 -1.049683,-0.071045 -1.536621,-0.213013c-0.486816,-0.142029 -0.912842,-0.365173 -1.277954,-0.669434c-0.365234,-0.304321 -0.659424,-0.689697 -0.882568,-1.156311c-0.212891,-0.466553 -0.319336,-1.00415 -0.319336,-1.612732l0,-13.616821l-2.632202,0l0,-1.962646l2.632202,0l0,-6.435608l2.479858,0l0,6.435608l4.381714,0l0,1.962646l-4.381714,0l0,12.932129c0.050781,0.69989 0.299194,1.217224 0.745483,1.551941c0.456421,0.324524 0.973755,0.486877 1.55188,0.486877c0.709961,0 1.333862,-0.116638 1.871338,-0.349915c0.527466,-0.223145 0.86731,-0.385498 1.019409,-0.486877l0.654175,2.008301zm8.635132,1.277954c-2.069214,0 -3.605835,-0.689697 -4.609985,-2.069153c-1.014282,-1.369324 -1.521484,-3.418091 -1.521484,-6.146545l0,-11.167358l2.47998,0l0,10.726074c0,4.310791 1.47583,6.466125 4.427368,6.466125c0.730347,0 1.445313,-0.121765 2.145264,-0.365173c0.709961,-0.243347 1.364258,-0.598389 1.962646,-1.065002c0.588257,-0.456421 1.120728,-1.004089 1.597412,-1.643066c0.476807,-0.628967 0.862183,-1.343994 1.156372,-2.145264l0,-11.973694l2.479858,0l0,15.807739c0,0.679565 0.294189,1.019287 0.882446,1.019287l0,2.190918c-0.294189,0.050659 -0.532471,0.07605 -0.715088,0.07605c-0.182495,0 -0.309326,0 -0.380371,0c-0.588257,-0.030396 -1.064941,-0.238403 -1.430054,-0.623779c-0.365234,-0.385437 -0.547729,-0.907776 -0.547729,-1.567139l0,-2.190857c-0.831665,1.480896 -1.95752,2.632141 -3.377563,3.453674c-1.420044,0.811462 -2.936401,1.217163 -4.549072,1.217163zm24.407227,0c-1.602539,0 -3.017456,-0.405701 -4.244751,-1.217163c-1.227295,-0.821533 -2.221313,-1.851074 -2.982056,-3.088501l0,11.715027l-2.479858,0l0,-26.792419l2.221313,0l0,3.681885c0.780884,-1.196838 1.795288,-2.165527 3.042847,-2.905945c1.237305,-0.740479 2.586426,-1.110596 4.046997,-1.110596c1.318604,0 2.525635,0.273865 3.620972,0.821533c1.095459,0.547729 2.043823,1.277954 2.845093,2.190857c0.80127,0.912842 1.425171,1.967712 1.87146,3.164612c0.456299,1.186707 0.68457,2.414001 0.68457,3.681824c0,1.338867 -0.208008,2.60675 -0.623779,3.803589c-0.415894,1.186707 -1.00415,2.231445 -1.764893,3.134155c-0.770874,0.90271 -1.683716,1.612732 -2.738647,2.129944c-1.064941,0.527466 -2.231445,0.791199 -3.499268,0.791199m-0.68457,-2.190857c1.024414,0 1.952393,-0.218079 2.78418,-0.654236c0.841919,-0.436157 1.562012,-1.014282 2.1604,-1.734436c0.598511,-0.720154 1.054932,-1.536682 1.369385,-2.449463c0.314331,-0.912842 0.471558,-1.85614 0.471558,-2.829895c0,-1.024414 -0.182495,-1.998169 -0.547607,-2.921082c-0.365112,-0.923035 -0.862305,-1.739563 -1.491089,-2.449585c-0.639038,-0.699829 -1.389648,-1.25769 -2.251709,-1.673523c-0.862061,-0.415833 -1.790161,-0.62384 -2.784302,-0.62384c-0.638916,0 -1.303223,0.126831 -1.993042,0.38031c-0.699829,0.253601 -1.343872,0.593384 -1.932129,1.01947c-0.598511,0.425964 -1.110718,0.92804 -1.536621,1.506165c-0.426147,0.568054 -0.689819,1.17157 -0.79126,1.810547l0,5.842224c0.294189,0.679626 0.664429,1.308533 1.110718,1.886658c0.456421,0.588257 0.968628,1.095398 1.536621,1.521423c0.578125,0.425964 1.191772,0.760742 1.840942,1.004089c0.659302,0.243408 1.343872,0.365173 2.053955,0.365173zm12.320801,1.825745l0,-19.017944l2.47998,0l0,19.017944l-2.47998,0m0,-23.004089l0,-3.651428l2.47998,0l0,3.651428l-2.47998,0zm15.071777,23.369202c-1.318604,0 -2.535767,-0.273865 -3.651489,-0.821533c-1.125854,-0.547729 -2.089355,-1.272949 -2.890625,-2.175659c-0.80127,-0.90271 -1.430176,-1.942383 -1.886597,-3.119019c-0.446289,-1.176514 -0.669434,-2.413879 -0.669434,-3.712219c0,-1.338867 0.218018,-2.60675 0.654175,-3.803528c0.436279,-1.207031 1.039673,-2.261902 1.810547,-3.164612c0.770874,-0.90271 1.683716,-1.612732 2.738525,-2.130066c1.05481,-0.527466 2.216309,-0.791077 3.484131,-0.791077c1.612671,0 3.037842,0.420837 4.275146,1.262695c1.237549,0.841919 2.211304,1.856201 2.921265,3.042908l0,-11.608521l2.47998,0l0,23.445313c0,0.679565 0.294189,1.019287 0.882324,1.019287l0,2.190918c-0.365112,0.070984 -0.659302,0.106506 -0.882324,0.106506c-0.578247,0 -1.090454,-0.187683 -1.536743,-0.562927c-0.436279,-0.375366 -0.654297,-0.831787 -0.654297,-1.369324l0,-1.85614c-0.750488,1.237366 -1.769897,2.221252 -3.057983,2.951599c-1.298218,0.730286 -2.637085,1.095398 -4.016602,1.095398m0.547729,-2.190857c0.608643,0 1.25769,-0.121765 1.94751,-0.365173c0.689575,-0.243347 1.338867,-0.578125 1.947388,-1.004089c0.608521,-0.426025 1.125732,-0.923035 1.55188,-1.491028c0.426025,-0.578186 0.689697,-1.196838 0.791138,-1.85614l0,-5.872681c-0.24353,-0.659302 -0.598389,-1.272949 -1.065063,-1.841003c-0.456421,-0.578125 -0.983765,-1.085266 -1.582275,-1.521423c-0.598389,-0.436157 -1.237427,-0.77594 -1.916992,-1.019348c-0.679565,-0.243469 -1.348999,-0.365173 -2.008301,-0.365173c-1.024414,0 -1.94751,0.218079 -2.769043,0.654297c-0.831665,0.436035 -1.546753,1.014221 -2.145264,1.734314c-0.598389,0.720154 -1.05481,1.541809 -1.369141,2.464722c-0.314453,0.923035 -0.47168,1.87146 -0.47168,2.845154c0,1.024353 0.182617,1.998108 0.547729,2.921143c0.365112,0.933167 0.862061,1.744568 1.490967,2.434265c0.639038,0.689758 1.389526,1.242493 2.251709,1.658386c0.862183,0.415833 1.795288,0.623779 2.799438,0.623779zm13.410156,-24.829773l2.479858,0l0,22.349792c0,0.69989 0.197876,1.252686 0.593384,1.658447c0.385376,0.405701 0.933105,0.608521 1.643066,0.608521c0.263794,0 0.578247,-0.040527 0.943359,-0.121704c0.365112,-0.070984 0.704956,-0.167419 1.019409,-0.289063l0.441284,2.008301c-0.456543,0.192688 -1.019409,0.349915 -1.688965,0.47168c-0.669312,0.121643 -1.247559,0.182556 -1.734253,0.182556c-1.146362,0 -2.04895,-0.31958 -2.708252,-0.958496c-0.659302,-0.649231 -0.988892,-1.556946 -0.988892,-2.72345l0,-23.186584zm9.99292,32.497803c0.192627,0.020264 0.380371,0.040527 0.562866,0.060852c0.182617,0.010132 0.360107,0.015259 0.532471,0.015259c0.436157,0 0.781006,-0.060974 1.034668,-0.182617c0.263794,-0.121704 0.517212,-0.390564 0.760742,-0.806396c0.243286,-0.415833 0.517212,-1.014282 0.821411,-1.795288c0.304443,-0.770813 0.735474,-1.815613 1.293335,-3.134094l-8.29187,-19.017944l2.556152,0l7.044189,16.72052l6.541992,-16.72052l2.373535,0l-9.858765,24.525513c-0.274048,0.710022 -0.720337,1.328735 -1.338867,1.856201c-0.618896,0.517212 -1.46582,0.775818 -2.540894,0.775818c-0.24353,0 -0.471802,-0.005005 -0.68457,-0.015137c-0.223267,-0.010193 -0.491943,-0.040588 -0.806396,-0.091248l0,-2.190918zm22.189575,-18.470154c0,2.332825 -0.466431,4.675781 -1.39978,7.028992c-0.922852,2.342957 -2.160278,4.660706 -3.712158,6.952942l-1.825806,-0.988953c0.699951,-1.095398 1.338867,-2.200989 1.916992,-3.316711c0.568115,-1.125854 1.054932,-2.241577 1.460693,-3.347168c0.39563,-1.10553 0.704834,-2.180664 0.928101,-3.225464c0.213013,-1.05481 0.319458,-2.053894 0.319458,-2.997131c0,-1.166443 -0.1521,-2.388672 -0.456421,-3.666748c-0.304321,-1.277954 -0.684692,-2.525513 -1.140991,-3.742615c-0.466797,-1.217224 -0.973755,-2.363342 -1.521484,-3.438477c-0.547852,-1.075134 -1.075073,-1.977844 -1.582275,-2.708191l1.932251,-0.912842c0.709961,1.196899 1.374268,2.383545 1.99292,3.56012c0.618774,1.186768 1.151245,2.368408 1.597534,3.544983c0.456421,1.186768 0.816528,2.37854 1.0802,3.575378c0.273926,1.207031 0.410767,2.434265 0.410767,3.681885zm17.52417,12.992981c-1.480713,0 -2.926147,-0.243408 -4.33606,-0.730286c-1.420044,-0.486877 -2.636963,-1.191772 -3.651489,-2.114807l1.125854,-1.688782c1.075195,0.882507 2.165527,1.541687 3.271118,1.977844c1.105591,0.436218 2.292358,0.654236 3.560303,0.654236c1.531494,0 2.753784,-0.309326 3.666504,-0.92804c0.912842,-0.618774 1.369385,-1.501221 1.369385,-2.647278c0,-0.537598 -0.121704,-0.983887 -0.365112,-1.338867c-0.24353,-0.34491 -0.603394,-0.654236 -1.0802,-0.92804c-0.476685,-0.263733 -1.070068,-0.502136 -1.780151,-0.715149c-0.720215,-0.20282 -1.556885,-0.415833 -2.510376,-0.638977c-1.095337,-0.263733 -2.043701,-0.527466 -2.845093,-0.791199c-0.801147,-0.273804 -1.465454,-0.578125 -1.99292,-0.912781c-0.517456,-0.34491 -0.907837,-0.765869 -1.171631,-1.262817c-0.253418,-0.497009 -0.380249,-1.125854 -0.380249,-1.886597c0,-0.943237 0.1875,-1.780029 0.562866,-2.510376c0.385376,-0.730286 0.897583,-1.33374 1.536621,-1.810486c0.64917,-0.476685 1.404785,-0.836792 2.266968,-1.0802c0.862061,-0.243469 1.780151,-0.365112 2.753662,-0.365112c1.460693,0 2.789429,0.238281 3.986206,0.715027c1.186768,0.476746 2.145264,1.100525 2.875488,1.871338l-1.201782,1.460632c-0.699951,-0.730286 -1.557129,-1.278076 -2.571289,-1.643188c-1.014282,-0.365112 -2.069214,-0.547729 -3.164551,-0.547729c-0.649048,0 -1.25769,0.071045 -1.825806,0.213074c-0.557739,0.131836 -1.049683,0.344788 -1.47583,0.638977c-0.426025,0.283936 -0.76062,0.654175 -1.00415,1.110596c-0.243286,0.446289 -0.365112,0.973755 -0.365112,1.582336c0,0.517212 0.086304,0.933167 0.258667,1.24762c0.172363,0.314392 0.451294,0.588257 0.836914,0.821533c0.39563,0.233215 0.887329,0.441162 1.475708,0.623718c0.598389,0.182556 1.323608,0.370239 2.175537,0.562927c1.217285,0.294189 2.287354,0.583252 3.210449,0.867249c0.932983,0.294189 1.708984,0.639038 2.327637,1.034546c0.618774,0.385437 1.085327,0.857117 1.39978,1.415039c0.314453,0.5578 0.471558,1.242432 0.471558,2.053894c0,1.744568 -0.669312,3.129028 -2.008179,4.153442c-1.338867,1.024475 -3.139282,1.536682 -5.401245,1.536682zm10.210449,-0.365112l0,-19.017944l2.47998,0l0,19.017944l-2.47998,0m0,-23.004089l0,-3.651428l2.47998,0l0,3.651428l-2.47998,0zm35.550293,23.004089l-2.47998,0l0,-10.619568c0,-2.221375 -0.355103,-3.854309 -1.065063,-4.899109c-0.699829,-1.044678 -1.744507,-1.567017 -3.134033,-1.567017c-0.730347,0 -1.420044,0.131897 -2.069214,0.39563c-0.639038,0.273804 -1.232422,0.654175 -1.780029,1.141052c-0.547729,0.486755 -1.029541,1.064941 -1.445313,1.734375c-0.415894,0.669434 -0.735474,1.404785 -0.958496,2.206055l0,11.608582l-2.47998,0l0,-10.619568c0,-2.272034 -0.339844,-3.915222 -1.019409,-4.929443c-0.679565,-1.024475 -1.724243,-1.536682 -3.134033,-1.536682c-1.440308,0 -2.718506,0.497009 -3.834106,1.490967c-1.125854,1.00415 -1.932251,2.317627 -2.418945,3.940552l0,11.654175l-2.47998,0l0,-19.017944l2.266846,0l0,4.305725c0.781006,-1.460632 1.800415,-2.601685 3.058105,-3.423279c1.267822,-0.811401 2.667603,-1.217102 4.199219,-1.217102c1.612671,0 2.900757,0.451294 3.864258,1.354004c0.953491,0.90271 1.541748,2.084351 1.765015,3.544983c1.774902,-3.266052 4.21936,-4.898987 7.33313,-4.898987c1.075195,0 1.983032,0.192688 2.723511,0.578064c0.740479,0.395569 1.338867,0.953491 1.795288,1.673645c0.446289,0.710022 0.776001,1.572144 0.98877,2.586426c0.203003,1.014221 0.304443,2.140076 0.304443,3.377563l0,11.136902zm13.666504,0.365112c-1.602539,0 -3.017578,-0.405701 -4.244873,-1.217163c-1.227173,-0.821533 -2.221191,-1.851074 -2.981934,-3.088501l0,11.715027l-2.47998,0l0,-26.792419l2.221313,0l0,3.681885c0.780884,-1.196838 1.795166,-2.165527 3.042847,-2.905945c1.237427,-0.740479 2.586304,-1.110596 4.046997,-1.110596c1.318481,0 2.525513,0.273865 3.621094,0.821533c1.095337,0.547729 2.043701,1.277954 2.845093,2.190857c0.801147,0.912842 1.425049,1.967712 1.871338,3.164612c0.456299,1.186707 0.68457,2.414001 0.68457,3.681824c0,1.338867 -0.207886,2.60675 -0.623901,3.803589c-0.415771,1.186707 -1.004028,2.231445 -1.764771,3.134155c-0.770874,0.90271 -1.683716,1.612732 -2.738647,2.129944c-1.064819,0.527466 -2.231445,0.791199 -3.499146,0.791199m-0.684692,-2.190857c1.024414,0 1.952393,-0.218079 2.784302,-0.654236c0.841675,-0.436157 1.56189,-1.014282 2.160278,-1.734436c0.598389,-0.720154 1.054932,-1.536682 1.369385,-2.449463c0.314453,-0.912842 0.471558,-1.85614 0.471558,-2.829895c0,-1.024414 -0.182617,-1.998169 -0.547729,-2.921082c-0.365112,-0.923035 -0.862183,-1.739563 -1.490967,-2.449585c-0.638916,-0.699829 -1.389526,-1.25769 -2.251709,-1.673523c-0.862061,-0.415833 -1.790161,-0.62384 -2.78418,-0.62384c-0.639038,0 -1.303345,0.126831 -1.993164,0.38031c-0.699829,0.253601 -1.343872,0.593384 -1.932251,1.01947c-0.598389,0.425964 -1.110596,0.92804 -1.536621,1.506165c-0.425903,0.568054 -0.689575,1.17157 -0.791016,1.810547l0,5.842224c0.294067,0.679626 0.664307,1.308533 1.110596,1.886658c0.456299,0.588257 0.968628,1.095398 1.536743,1.521423c0.578125,0.425964 1.191772,0.760742 1.84082,1.004089c0.659302,0.243408 1.343872,0.365173 2.053955,0.365173zm12.427368,-24.829773l2.479858,0l0,22.349792c0,0.69989 0.197876,1.252686 0.593384,1.658447c0.385376,0.405701 0.933105,0.608521 1.643066,0.608521c0.263794,0 0.578247,-0.040527 0.943359,-0.121704c0.365112,-0.070984 0.704956,-0.167419 1.019409,-0.289063l0.441284,2.008301c-0.456543,0.192688 -1.019409,0.349915 -1.688965,0.47168c-0.669312,0.121643 -1.247437,0.182556 -1.734253,0.182556c-1.14624,0 -2.04895,-0.31958 -2.708252,-0.958496c-0.659302,-0.649231 -0.988892,-1.556946 -0.988892,-2.72345l0,-23.186584zm17.514648,27.02063c-1.389526,0 -2.662476,-0.263733 -3.818848,-0.791199c-1.156128,-0.517212 -2.160278,-1.232361 -3.012329,-2.145142c-0.851929,-0.912842 -1.516235,-1.967773 -1.993042,-3.164612c-0.466553,-1.186707 -0.699951,-2.464722 -0.699951,-3.833984c0,-1.338867 0.233398,-2.596558 0.699951,-3.773193c0.476807,-1.186646 1.135864,-2.221252 1.977783,-3.103699c0.841797,-0.892578 1.846069,-1.597473 3.012573,-2.114807c1.166382,-0.527466 2.434204,-0.791077 3.803589,-0.791077c1.379395,0 2.647217,0.263611 3.803589,0.791077c1.156128,0.517334 2.150269,1.227356 2.981934,2.130066c0.831665,0.90271 1.475708,1.937256 1.932251,3.103699c0.466553,1.166382 0.699829,2.408875 0.699829,3.727478c0,0.192688 0,0.385498 0,0.578186c0,0.192688 -0.015259,0.329651 -0.045776,0.410828l-16.279175,0c0.070923,1.014221 0.309326,1.957458 0.714966,2.829834c0.39563,0.862122 0.912842,1.607605 1.55188,2.23645c0.628906,0.639038 1.354126,1.13092 2.175781,1.47583c0.811401,0.35498 1.678589,0.532471 2.601563,0.532471c0.608643,0 1.217041,-0.086182 1.825684,-0.258606c0.608643,-0.162354 1.171509,-0.390503 1.688721,-0.684692c0.507202,-0.294067 0.96875,-0.654175 1.384644,-1.080261c0.415771,-0.425903 0.730225,-0.892578 0.943237,-1.399658l2.160522,0.578125c-0.294189,0.710022 -0.710083,1.348999 -1.247681,1.917053c-0.537476,0.567993 -1.156372,1.065002 -1.856079,1.490967c-0.710083,0.426025 -1.491089,0.755676 -2.34314,0.988953c-0.851929,0.233276 -1.739502,0.349915 -2.662476,0.349915m7.013916,-10.878174c-0.071045,-1.024475 -0.309326,-1.957642 -0.71521,-2.7995c-0.40564,-0.841858 -0.917847,-1.567139 -1.536621,-2.175659c-0.618652,-0.608582 -1.333618,-1.0802 -2.145142,-1.414917c-0.821533,-0.344849 -1.69397,-0.517334 -2.616943,-0.517334c-0.922852,0 -1.800171,0.172485 -2.63208,0.517334c-0.821411,0.334717 -1.546631,0.806335 -2.175537,1.414917c-0.618774,0.608521 -1.115845,1.338867 -1.490967,2.190918c-0.375366,0.85199 -0.598633,1.780029 -0.669556,2.784241l13.982056,0z"/>
82 </g>
83 </svg>
+0
-71
docs/_static/img/sadhu.svg less more
0 <?xml version="1.0" encoding="UTF-8"?>
1 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-152.725 -113.013 1691.724 1969.873" enable-background="new -152.725 -113.013 1691.724 1969.873" xml:space="preserve">
3 <g>
4 <path fill="#60261A" stroke="#60261A" stroke-width="0.5" d="M751.48,10.67c16.5-20.42,41.64-33.99,68-35.17 c14.62-0.73,29.23,3.68,41.39,11.72c14.73,9.34,25.29,23.46,37.21,35.86c-0.58,1.15-1.15,2.3-1.71,3.45 c-2.64-1.96-5.06-4.17-7.43-6.43C876.48,8.2,863.49-4.19,846.88-9.95c-13.49-4.92-28.67-4.01-41.95,1.16 c7.53,0.4,15.11,0.9,22.41,2.9c20.16,5.11,37.97,17.62,50.94,33.71c14.76,18.27,23.56,41.29,24.65,64.76 c0.37,3.23,0.14,6.8,1.75,9.72c6.06,6.93,13.64,13.31,22.92,15.14c4.18,0.86,9.76,0.73,12.24-3.37c3.6-6.17,3.17-13.63,3.83-20.5 c0.8-8.72,0.99-18.33,6.68-25.53c0.88,0.87,1.77,1.74,2.67,2.61c-4.22,8.76-2.21,18.73-1.79,28.04c0.58,8.62,0.89,18.57-5.35,25.39 c-5.19,5.88-13.5,6.65-20.83,6.99c7.33,3.35,15.38,5.22,23.47,4.8c13.14-0.47,25.72-5.45,38.92-5.28 c10.04,0.38,19.92-2.02,29.96-1.96c23.42-0.73,48.24,3.29,67.36,17.72c13.48,10.54,25.04,24.52,29.78,41.22 c5.01,16.24,4.47,34.07,12.39,49.4c4.68,9.44,15.08,14.44,25.1,15.87c9.96,1.39,21.03-0.16,29-6.73 c7.65-6.18,9.26-17.73,5.47-26.46c-3.32-7.3-12.84-9.73-19.91-6.84c-4.05,1.32-6.89,4.65-9.36,7.94c0.33-2.91,2.18-5.26,4.37-7.07 c7.91-6.83,21.83-6.04,27.65,3.12c6.12,10.18,5.12,24.65-3.35,33.26c-6.11,6.37-14.73,9.74-23.34,10.99 c-12.51,1.71-25.96-0.66-36.26-8.22c-8.21-6.07-12.85-15.65-16.1-25.07c-5.41-15.11-6.4-31.95-15.27-45.69 c-9.32-13.64-23.32-24.55-39.57-28.37c6.06,5.23,12,10.65,16.97,16.97c13.79,16.89,22.26,38.1,23.77,59.87 c0.43,7.15,2.42,14.22,5.97,20.45c7.12,12.61,19.79,21.52,33.59,25.47c11.51,3.18,23.29,5.27,34.76,8.62 c15.54,4.69,30.72,11.14,44.01,20.55c10.5,7.35,19.71,16.74,25.96,27.98c10.98,18.97,16.37,40.53,19.94,61.99 c3.17,17.65,2.99,36.02,9.2,53.04c2.01,5.39,4.85,10.94,9.94,13.99c4.43,2.63,10.48,1.7,13.98-2.06 c5.51-5.2,6.97-12.92,10.19-19.48c-1.2,7.59-3.35,15.45-8.34,21.48c-4.85,5.82-14.03,6.56-20.12,2.32 c-6.79-4.6-10.37-12.42-13.22-19.83c-2.48-6.09-3.52-12.63-5.74-18.79c-0.47,5.08-0.55,10.18-1.25,15.23 c-3.44,25.89-8.01,51.87-6.87,78.09c0.56,7.29,1.35,14.88,4.86,21.43c2.16,4.17,6.79,7.13,11.6,6.27 c8.54-1.15,15.36-6.93,22.24-11.64c-5.14,5.7-11.33,10.69-18.39,13.77c-5.38,2.28-12.09,1.84-16.49-2.24 c-5.96-5.44-8.28-13.55-10.09-21.13c-3.06-14.35-3.56-29.1-3.69-43.72c-6.38,12.27-13.55,24.11-21.57,35.37 c-4.99,7.28-10.25,14.73-12.51,23.39c-1.09,3.86,0.03,8.17,3.11,10.8c5.5,4.9,12.69,7.22,19.57,9.45 c14.2,4.25,28.6,8.08,42.23,14.01c11.51,5.15,22.94,11.97,30.18,22.59c6.79,9.95,7.86,22.65,6.14,34.29 c-0.26,2.52-1.26,5.2-0.02,7.62c2.75,6.36,4.75,13.05,5.74,19.91c2.87,19.98-0.64,40.19-5.64,59.54l1.89-0.24 c-0.72,0.37-1.42,0.76-2.11,1.15c-6.75,24.99-16.12,49.21-22.2,74.38c-4.48,18.43-6.36,38.25-0.28,56.55 c2.3,0.76,4.59,1.58,6.93,2.32c-0.55,0.09-1.63,0.28-2.18,0.37c0.94,0.47,1.9,0.96,2.88,1.46c-1.44,0.31-2.87,0.62-4.27,0.93 c-0.4-0.07-1.19-0.2-1.59-0.27c0.46,1.01,0.92,2.02,1.42,3.06c-0.37,0.55-1.12,1.66-1.49,2.22c-1.18-2.08-2.22-4.21-3.23-6.35 c-4.55-2.17-9.09-4.57-12.71-8.13c-7.3-6.95-11.33-17.05-11-27.1c-0.22-10.02,4.12-19.24,7.7-28.35 c3.33-9.05,6.67-18.21,8.24-27.76c-5.58,13.79-13.25,26.75-22.76,38.19c-5.62,6.31-8.41,14.69-9.35,22.97 c-1.87,17.06,6.76,34.67,21.26,43.8c9.22,6.19,20.57,7.13,30.86,10.69c12.93,1.77,25.75,5.15,37.34,11.29 c16.67,8.48,30.69,22.5,38.13,39.77c4.47,9.34,5.66,19.74,8.93,29.49c2.9,9.2,0.93,18.99,3.23,28.28c-0.39,0.5-1.17,1.48-1.56,1.97 c-0.14-0.49-0.44-1.46-0.59-1.95c-3.55,17.42-9.78,34.19-12.76,51.74c-1.62,9.83-2.06,20.12,0.82,29.77 c2.58,7.48,8,13.57,13.76,18.83c7.15,6.35,15.58,11.47,24.88,13.96c6.95,1.83,14.88,1.59,20.95-2.66 c6.46-3.9,10.21-11.08,11.13-18.42c0.87,0.87,1.76,1.75,2.67,2.65c-1.01,8.86-6.45,17.09-14.44,21.15 c-7.75,4.54-17.29,4.18-25.67,1.78c-12.03-3.48-23.02-10.31-31.83-19.16c-5.31-5.3-9.76-11.66-11.73-18.96 c-4.07-13.36-3.15-27.54-1.38-41.2c-3.35,6.18-8.52,11.36-10.58,18.21c-2.84,8.64-3.32,17.92-2.69,26.94 c1.45,19.29,11.67,37.72,27.33,49.1c14.08,9.47,28.15,19.01,41.39,29.66c13.41,10.8,26.76,22.16,36.52,36.51 c10.23,14.74,16.78,32.58,15.7,50.7c-0.86,14.26-5.66,29.13-16.66,38.83c-14.05,12.73-34.86,15.72-52.83,11.17 c-16.48-4.09-30.99-16.58-35.99-33.01c-4.11-13.19-1.14-27.07,0.43-40.4c2.95,6.49,5.28,13.24,8.05,19.82 c3.04,7.04,7.4,13.97,14.17,17.95c10.2,5.86,24.21,4.05,32.55-4.26c5.98-5.98,7.32-15.09,6.17-23.15 c-2.2-15.55-10.54-29.76-21.65-40.66c-12.45-12.95-27.66-23.1-38.88-37.25c-10.5-13.01-20.5-27.09-35.03-35.94 c-2.08-1.83-3.47-4.23-4.36-6.8c-10.01-25.73-24.81-49.81-44.68-69.1c-9.34-9.89-20.63-17.61-31.95-25 c-16.16-9.19-33.01-17.18-50.44-23.64c-28.92-10.95-58.88-19.14-87.09-31.94c-16.24-7.91-32.18-16.57-46.9-27.08 c-9.02-6.88-18.06-13.81-26.13-21.79c-9.8-9.35-18.05-20.15-26.08-31.01c-11.49-17.9-21.28-37.03-27.58-57.4 c-3.07-8.8-3.79-18.15-4.56-27.36c-0.42-10.32,1.47-20.56,3.51-30.62c1.66-6.35,4.04-12.48,6.02-18.73 c7.87-18.81,18.13-36.56,29.72-53.32c2.73-4.11,6.03-7.91,7.87-12.54c-3.73,2.1-5.27,6.35-8.09,9.37 c-4.92,5.5-8.59,11.93-12.99,17.84c-12.2,18.09-22.89,37.59-28.13,58.93c-2.5,8.46-2.96,17.32-3.7,26.06 c0.45,12.12,1.89,24.34,5.97,35.84c2.84,7.64,5.87,15.21,9.32,22.6c2.98,7.56,7.68,14.24,11.79,21.22 c5.02,7.54,9.94,15.23,16.29,21.76c24.74,29.17,56.97,51.1,91.14,67.82c11.2,5.89,22.89,10.72,34.65,15.36 c7.94,2.4,15.35,6.22,23.21,8.86c12.52,4.64,25.08,9.21,37.27,14.66c7.2,3.04,14.63,5.64,21.44,9.54 c9.56,5.33,19.55,10.05,28.32,16.69c22.5,16.03,40.89,37.47,54.44,61.48c2.78,6.16,6.71,11.75,9.09,18.11 c3.72,9.45,7.98,18.75,10.32,28.68c2.43,8.33,4.67,16.77,5.52,25.44c2.17,18.5,2.53,37.53-2.34,55.66 c-1.72,7.71-4.56,15.1-7.72,22.32c-1.99,4.52-5.22,8.4-6.9,13.08c3.19-2.65,4.89-6.53,7.07-9.96c9-14.81,13.2-31.99,15.24-49.05 c2.61-25.65-1.6-51.64-10.31-75.81c0.6,0.13,1.79,0.37,2.39,0.5c10.86,11.73,16.77,27.22,19.81,42.71c2.6,16.58,0,33.6-4.76,49.56 c-5.08,16.52-13.27,32.01-23.68,45.78c-10.21,13.73-21.34,27.44-26.52,44.02c-2.85,9.64-3.73,20.6,0.81,29.88 c3.65,7.66,11.63,12.66,19.97,13.53c12.07,1.39,24.31-3.84,32.72-12.39c4.36-4.43,8.61-9.63,9.55-15.96 c0.59-3.57-1.69-6.57-3.53-9.34c12.05,7.82,23.14,17.92,29.76,30.86c3.71,7.38,5.17,16.35,2,24.19 c-3.31,8.08-10.41,13.91-17.94,17.95c-8.73,4.78-18.81,6.58-28.68,6.65c-9.15-0.35-18.47-1.46-26.95-5.11 c-8.12-3.64-15.81-8.15-23.5-12.59c-12.58-7.53-23.55-18.62-28.64-32.57c-4.53-12.11-3.98-25.71-0.05-37.9 c5.88-19.61,16.4-37.41,22.58-56.91c2.94-9.78,5.39-20.03,4.19-30.3c-1.11-10.29-6.03-19.86-12.76-27.59 c-7.49-8.54-16.08-16.12-22.7-25.41c6.9,17.15,12.09,35.43,11.32,54.08c-0.51,11.99-3.19,23.83-7.36,35.07 c-7.97,20.88-12.46,43.51-9.95,65.89c1.87,16.25,8.33,32.32,19.93,44.07c5.8,6.08,12.79,10.87,20.17,14.83 c8.57,4.59,17.55,8.65,27.1,10.69c-3.17,0.52-6.36-0.15-9.47-0.64c-22.25-3.59-44.72-11.58-61.2-27.5 c-13.63-12.91-21.69-30.86-24.47-49.26c-1.42-10.01-2.36-20.29-0.39-30.28c2.35-14.51,5.94-29.12,4.55-43.91 c-0.68-5.74-2.6-12.43-8.3-15.02c-19.49-8.81-38.07-20.51-52.35-36.62c-11.8-13.18-20.15-29.62-22.8-47.18 c-3-19.75-0.41-40.59,8.77-58.45c3.14-6.59,7.33-12.6,11.23-18.75c3.45-7.83-0.32-18.06-7.93-21.96 c-5.19-2.96-11.34-2.56-17.06-3.32c-7.91-0.98-15.52-4.66-20.91-10.57c-6.78-7.38-11.39-16.45-18.26-23.75 c-5.68-6.35-12.91-11.03-20.47-14.82c7.15,19.12,12.34,39.08,14.15,59.46c1.83,15.31,0.29,30.73,0.31,46.09 c0.37,9.04,0.5,18.79,5.68,26.6c6.45,10.11,14.55,19.26,19.17,30.45c6.9,15.54,5.35,33.81-1.45,49.1 c-6.99,15.6-19.57,27.85-32.95,38.1c-13.57,10.54-28.52,19.18-41.82,30.08c-9.49,7.74-16.64,17.91-22.47,28.59 c-8.22,15.3-13.93,31.96-16.73,49.11c-2.54,16.39-2.61,34.01,4.62,49.31c4.08,8.94,11.3,16.35,20.09,20.76 c-0.1,0.86-0.3,2.58-0.4,3.45c-15.04-4.98-26.13-18.02-31.3-32.68c-7.53-21.4-6.42-44.77-2.29-66.76 c-1.48,1.88-2.99,3.73-4.46,5.61c-0.66-3.63,2.47-6.24,4.15-9.08c10.3-15.67,20.03-31.94,26.39-49.65 c5.72-17.85,7.73-37.62,1.7-55.65c-5.64-17.82-17.41-32.7-28.82-47.16c-5.59-7.41-11.77-14.36-17.05-22 c-12.46-16.84-19.72-37.32-21.69-58.12c-1.3-8.3-1.28-16.7-1.85-25.04c-0.96-15.12,1.71-30.22,0.48-45.33 c-1.82,4.19-1.58,8.81-2.04,13.27c-2.5,23.85-4.41,48.22,0.53,71.91c1.24,8.15,4.28,15.85,7.28,23.49 c3.53,8.84,9.4,16.44,15.26,23.86c12.14,14.97,25.27,29.38,34.4,46.5c4.76,8.48,7.94,17.81,10.02,27.28 c4.6,22.85-1.7,46.46-12.51,66.65c-3.05,6.73-7.08,12.92-10.76,19.3c-5.99,9.13-11.07,18.81-16.55,28.25 c-8.25,16.44-15.26,34.18-15.47,52.81c-0.09,4.71-0.37,9.49,0.69,14.14c1.15-9.38,0.92-18.96,3.3-28.16 c1.12-4.2,1.57-8.93,4.71-12.22c-4.03,16.47,1.35,33.03,4.36,49.17c2.23,11.78,3.92,24.3-0.12,35.89 c-2.83,8.28-8.85,15.18-16.13,19.9c-8.65,5.82-18.96,8.22-28.79,11.27c0.81,8,1.39,16.18-0.3,24.13 c-1.95,9.14-5.3,18.09-10.54,25.89c-7.86,11.93-19.78,20.67-32.81,26.25c-20.96,8.95-43.84,11.49-66.12,15.24 c-19.58,3.28-39.93,6.75-56.88,17.74c-11.82,7.49-20.81,19.17-24.89,32.57c-0.42,0.49-1.26,1.47-1.68,1.95 c-0.52-0.68-1.02-1.36-1.49-2.02c1.84-7.8,5.34-15.17,9.97-21.68c3.74-5.53,9.02-9.65,13.82-14.18 c-12.08,10.06-23.88,20.45-35.92,30.56c0.28-4.28,3.12-8.51,1.23-12.72c-0.1-0.36-0.28-1.07-0.38-1.43 c0.19-6.16,0.23-12.32-0.65-18.42c-1.1-19.6,0.86-39.32-1.25-58.86c-0.13-9.46,0.14-18.92-0.17-28.37l0.53-0.57 c6.61-6.82,15.11-11.35,22.63-17.04c13.68-9.29,28.06-17.65,40.58-28.54c4.25-3,7.96-6.63,11.2-10.69 c13.9-13.41,21.3-32.95,20.48-52.19c0.49-21.49-7.15-42.46-18.34-60.54c-9.19-15.34-20.99-28.87-33.16-41.87 c-6.41-5.63-11.44-12.53-17.5-18.48c-11.29-12.55-21.64-25.92-31.15-39.85l-0.22-0.56c-0.03-7.41,0.4-14.83-0.17-22.22 c-1.83-12.63,0.42-25.46-1.57-38.07c-0.26-18.15-0.3-36.31-0.07-54.46c0.16-3.06,0.12-6.12,0.09-9.16 c0.11-0.17,0.32-0.52,0.42-0.69c-0.52-0.62-1.03-1.22-1.53-1.81c0.45-2.26,1.05-4.56,0.79-6.87c-1.94-12.88-0.09-25.96-1.21-38.9 c-0.4-3.93,0.63-7.88-0.09-11.78c-0.69-4.07-0.64-8.2-0.56-12.3c-0.08-14.76,0.25-29.53-0.72-44.26c-0.28-2.39,0.08-4.77,0.6-7.08 c12.75,1.42,25.51,3.02,38.03,5.94c9.11,2.19,18.44,4.74,26.24,10.17c4.74,3.19,8.41,8.31,8.74,14.15 c0.49,8.38-3.66,16.11-7.93,23.02c-3.08,5.11-7.05,9.59-10.41,14.5c-1.59,2.14-2.1,5.82,0.59,7.35c5.63,3.41,12.59,2.79,18.9,2.69 c20.71-1.31,41.01-6.23,60.9-11.92c17.23-5.18,34.24-11.28,50.33-19.37c7.32-3.76,14.47-7.99,20.78-13.31 c9.59-8.08,20.34-14.61,30.66-21.69c-7.37-4.57-14.09-10.13-19.77-16.7c-13.96,11.45-32.1,16.64-49.95,16.95 c-21.02,0.46-42.37-3.11-61.55-11.9c-14.82-6.61-28.13-16.12-40.65-26.33c-16.4-13.24-32.71-26.6-48.31-40.76 c-6.27-5.79-12.6-11.56-18.15-18.05c-0.38-0.48-1.14-1.45-1.52-1.93l-0.25-0.29c19.2-18.78,37.69-38.29,57.19-56.76 c11.7,11.57,24.26,22.24,36.77,32.91c15.96,13.15,33.49,24.69,52.78,32.35c11.39,4.17,23.54,7.58,35.78,6.26 c4.83-0.44,9.09-2.9,13.3-5.1c-3.72,4.75-9.72,6.73-15.45,7.73c9.09,2.16,18.57,2.2,27.85,1.48c3.81-11.58,5.68-24.11,3.03-36.15 c-3.89-17.33-12.58-33.03-17.99-49.85c-7.81-22.99-8.53-48.29-2.37-71.75c3.74-15.41,11.91-29.59,22.87-40.99 c14.47-15.06,32.9-25.53,51.79-34.05c4.81-1.95,9.59-3.99,14.35-6.08c9.69-3.77,20.07-6.14,28.84-11.94 c6.96-4.13,13.83-8.56,19.67-14.22c6.17-6,10.34-13.76,13.31-21.77c2.52-6.88,3.45-14.9,0.09-21.65 c-3.53-7.26-10.64-11.8-17.64-15.26c-14.34-6.88-30.1-10.08-44.63-16.52c-13.75-6.21-25.96-16.52-33.1-29.94 c-5.61-10.7-8.14-22.85-8.19-34.88c0.53-6.9,3.09-13.46,3.87-20.34c1.22-8.81,1.87-18.86-3.64-26.46 c0.49,10.08-0.22,20.33-3.82,29.84c-3.04,9.82-9.14,18.61-10.41,28.96c-0.86,5.73,0.45,11.73,3.58,16.6 c6.43,10.31,16.72,17.71,22.23,28.66c3.11,5.83,4.33,13.01,1.85,19.29c-1.63,3.9-3.75,7.78-7.2,10.37 c3.37-6.4,8.03-13.35,5.63-20.94c-5.22-17.15-24.37-24.6-31.09-40.86c-3.68-9.39-2.18-19.97,1.2-29.22 c3.99-10.84,8.14-22.11,7.4-33.86c-0.66-8.03-2.86-16.24-7.7-22.78c-3.7-3.65-7.53-7.22-11.66-10.38 c2.77,5.74,7.25,10.52,9.39,16.6c2.85,6.82,2.98,14.83-0.26,21.54c-4.81,10.34-15.05,16.78-20.25,26.85 c-2.21,4.12-2.03,8.89-2.47,13.41c-1.27-5.67-0.87-11.79,2-16.93c4.72-9.65,13.87-16.72,16.86-27.28 c1.87-6.36-0.46-13.07-4.03-18.37c-10.12-15.03-26.55-25.37-33.75-42.43c-7.41-19.11-1.77-40.88,9.55-57.24 c2.96-3.54,3.15-8.27,4.37-12.51c2.14-7.83,5.88-15.12,10.28-21.9c4.26-6.9,8.18-14.38,9.03-22.57 c1.14-14.4-4.92-29.53-16.67-38.22c-10.05-7.61-23.31-8.47-33.92-15.04c-10.11-5.63-17.77-14.7-23.42-24.64 c-3.97-7.51-10.91-13.11-18.64-16.4c-3.14,3.36-6.93,6.05-10.03,9.43c-0.71,5.1-1.02,10.45,0.19,15.5c1.43,4.75,6.5,6.68,10.8,7.99 c12.88,3.63,26.3,6.36,37.93,13.29c6.29,3.89,12.08,9.34,14.51,16.5c2.4,6.67,1.93,14,0.11,20.74c-0.87,0.48-1.72,0.96-2.56,1.44 c0.15-5.77,0.31-11.56-0.13-17.33c-0.55-0.36-1.66-1.1-2.21-1.47c-3.56-7.57-10.86-12.38-18.55-15.05 c-10.98-4.02-22.73-4.92-34.1-7.32c-6.88-1.49-13.78-5.13-17.27-11.48c-2.41-3.99-3.06-8.66-3.75-13.18 c-22.55,11.71-47.79,17.53-73.08,18.7c-9.02,1.52-18.03,3.11-27.18,3.59c-0.44,0.03-1.31,0.1-1.75,0.13 c-0.52-0.6-1.04-1.2-1.54-1.79c0.26-0.38,0.77-1.14,1.03-1.52c-1.15-5.63,0.43-11.31-0.32-16.95c-0.61-7.32-0.02-14.67-0.27-22 c-0.24-4.34-1.08-8.63-0.98-12.98c0.14-11.68-0.07-23.36-0.03-35.04c-0.11-7.69,0.44-15.42-0.78-23.05 c-0.25-8.71-0.59-17.49,0.48-26.16c0.42-2.56-1.23-4.75-2.24-6.94c0.69-1.57,1.41-3.15,1.82-4.82c-1.9-1.74-4.16-3.1-5.63-5.27 c3.65,1.55,7.43,3.14,11.46,3.15c3.98-0.01,7.95-0.51,11.94-0.56c2.04-0.19,4.44,0.23,6.1-1.29c7.7-6.22,12.56-15.06,17.48-23.47 C733.84,32.15,741.2,20.14,751.48,10.67 M772.39,47.24c-14.78,2.16-26.97,11.9-36.84,22.53c-5.29,6.16-9.84,12.91-14.06,19.83 c-2.68,6.37-7.37,12.13-8.06,19.17c1.57-1.19,2.81-2.73,3.67-4.51c5.35-9.94,12.42-18.78,19.55-27.48 c6.11-6.29,12.17-12.86,19.81-17.34c12.5-9,30.16-12.46,44.3-5.23c5.58,2.87,11.33,5.85,15.53,10.65 c4.24,3.79,8.02,8.03,11.46,12.55c12.87,17.79,24.17,36.74,38.12,53.74c4.57,5.75,10.49,10.13,15.95,14.97 c8.46,4.87,17.58,10.1,27.7,9.56c9.51,0.79,18.92-1.76,27.63-5.4c4.2-2.28,8.99-3.92,12.26-7.55c-6.08,1.68-11.71,4.69-17.85,6.16 c-8.01,2.34-16.53,2.25-24.74,1.33c-9.02-2.03-17.45-6.53-24.56-12.38c-22.57-20.84-36.9-48.79-58.86-70.18 c-8.48-8.33-18.58-15.21-29.88-19.04C786.62,47,779.43,45.87,772.39,47.24 M753.73,98.89c-9.33,4.87-17.21,12-24.5,19.48 c-5.49,4.91-9.65,11.04-14.29,16.71c-3.13,4.35-6.42,8.74-8.43,13.73c4.33-2.69,6.34-7.76,10.17-11.04 c4.03-4.89,8.41-9.46,13-13.84c8.39-7.47,16.89-15.08,27.06-20.08c14.14-8.77,32.62-11.51,48.13-4.78 c13.15,5.38,21.99,17.23,29.15,28.99c5.62,9.79,10.85,19.8,16.46,29.59c5.14,8.24,11.15,16.52,19.96,21.13 c8.29,5.31,18.43,5.95,27.98,6.69c11.6-0.51,23.21-2.62,34.07-6.8c21.16-7.43,40.56-19.66,62.62-24.54 c9.86-2.68,20.29-3.37,30.38-1.59c4.38,0.34,8.6,2.06,13.04,1.85c-7.3-3.18-15.08-5.43-23.04-6.03c-5.66-0.9-11.42-0.82-17.02,0.33 c-11.14,1.25-21.85,4.72-32.33,8.54c-19.83,8.08-39.16,18.6-60.72,21.28c-10.23,0.69-20.91,0.7-30.49-3.43 c-10.82-5.27-18.78-14.81-25.03-24.84c-4.66-6.26-7.68-13.49-11.99-19.96c-5.09-8.96-10.68-17.78-18.17-24.95 c-7.7-8.45-18.68-13.58-29.91-15.16C777.19,88.2,764.55,92.64,753.73,98.89 M913.75,236.3c7.48,5.79,14.48,12.67,18.78,21.22 c4.89,7.87,6.98,16.99,9.28,25.84c2.41,9.55,2.47,19.45,3.6,29.18c0.18,7.04-0.1,14.1,0.68,21.12 c-0.68,10.32-0.42,20.68-0.44,31.03c0.64,5.63,0.86,11.29,0.95,16.95c2.17,18.74,5.41,37.38,10.3,55.6 c3.25,9.17,5.61,18.82,10.85,27.12c8.24,16.27,21.63,29.78,37.71,38.35c18.61,10.11,39.19,15.73,59.09,22.64 c17.74,6.35,35.71,14.47,48.69,28.57c10.82,10.27,20.82,21.51,28.59,34.29c6.26,8.78,10.09,18.94,14.1,28.87 c4.47,14.05,7.23,28.79,6.64,43.59c0.31,11.39-1.09,22.74-3.19,33.92c-3.96,18.89-9.28,37.53-16.55,55.42 c-3.81,10.82-7.81,22-7.44,33.64c-0.24,8.36,1.86,17.11,6.9,23.91c-0.01-3.23-2.02-5.89-2.88-8.88 c-2.36-6.72-2.61-14.12-1.12-21.05c2.14-12.21,7.09-23.7,12.22-34.9c3.52-8.69,6.32-17.63,9.51-26.43 c1.4-4.98,2.45-10.06,3.93-15.02c5.92-24.2,7.81-49.83,2.07-74.26c-4.75-18.75-13.29-36.56-25.12-51.86 c-4.58-7.23-11.28-12.71-16.67-19.28c-6.57-6.15-12.94-12.62-20.49-17.58c-18.25-12.65-40.24-17.58-61.18-23.84 c-16.99-5.47-34.57-10.85-48.76-22.13c-7.98-5.64-14.12-13.36-19.49-21.43c-10.54-16.96-14.68-36.79-17.93-56.22 c-1.61-13.67-4.44-27.28-4.04-41.09c-1.98-18.94,0.26-38.08-1.67-57.03c-0.84-20.76-4.5-41.98-14.9-60.25 c-4.81-7.93-11.13-15.07-19.14-19.89C915.87,236,913.73,234.61,913.75,236.3 M1092.59,269.85c-0.45,2.62,1.54,4.86,2.52,7.15 c6.85,14.08,15.33,27.44,26.05,38.89c3.59,3.11,5.97,7.39,9.95,10.1c5.85,5.6,12.05,10.97,19.29,14.74 c5.75,3.85,11.98,7,18.42,9.55c16.3,5.64,30.79,15.99,41.66,29.36c11.2,14.59,18.87,31.85,22.32,49.93 c3.54,19.98,2.57,41.72-7.75,59.68c-4.36,7.2-9.55,13.86-13.79,21.13c-6.27,8.56-12.01,17.5-17.47,26.58 c-2.1,3.9-3.36,8.16-4.72,12.35c-2.38,7.24-2.29,15.53,1.37,22.35c3.27,6.99,9.42,11.88,14.78,17.2c2.7,2.6,6.13,4.48,8.21,7.71 c1.92,3.1,5.51,4.54,7.61,7.49c2.58,3.7,6.21,6.5,8.91,10.12c6.56,7.61,12.45,15.81,17.53,24.48c3.86,5.53,6.06,11.93,8.93,17.98 c5.24,12.05,7.97,24.99,9.82,37.94c1.09,10.15,0.14,20.56-3.74,30.06c-7.85,19.69-20.46,36.98-33.2,53.75 c-5.72,9.01-12.65,17.3-16.98,27.13c-4.22,8.61-8.32,18.34-5.9,28.08c0.48,5.67,3.95,10.38,7.37,14.69 c5,5.37,10.1,10.75,16.32,14.75c9.01,6.8,19.64,10.81,29.44,16.28c8.19,3.67,16.51,7.07,24.87,10.37 c5.25,2.47,10.33,5.3,15.88,7.09c8.07,4.05,16.18,8.17,23.61,13.36c5.4,4.53,10.79,9.38,14.49,15.47c-0.19-1.61-0.29-3.31-1.36-4.6 c-5.5-8.09-13.47-14.15-21.59-19.43c-16.53-10.16-34.63-17.25-51.93-25.93c-17.68-8.43-35.88-18.27-47.45-34.58 c-4.89-6.49-4.52-15.45-2.11-22.83c2.25-8.49,7.78-15.49,12.17-22.93c3.48-6.31,8.5-11.54,12.45-17.53 c12.67-17.77,26.29-35.69,32.04-57.11c3.47-11.78,2.5-24.29,0.12-36.18c-3.36-18.12-10.24-35.49-20.17-51 c-11-16.58-24.88-31.1-39.75-44.23c-5.26-5.44-12.05-9.35-16.11-15.89c-4.98-6.32-4.97-14.85-3.81-22.41 c1.43-5.69,4.26-10.88,6.95-16.04c10.43-18.21,24.49-34.08,34.13-52.76c10.06-25.54,8.25-54.76-1.95-79.96 c-2.25-7.15-6.71-13.29-10.37-19.75c-5.7-8.43-12.93-15.71-20.55-22.39c-7.67-5.34-15.58-10.5-24.45-13.63 c-18.14-6.29-34.76-17.03-47.91-31.04c-12.8-12.72-23.44-27.57-31.34-43.79C1094.78,270.82,1093.69,268.46,1092.59,269.85 M890.24,394.75c3.34,4.85,6.35,10.18,10.97,13.95c-1.42-3.97-4.21-7.23-5.91-11.07c-5.21-9.97-7.62-21.05-9.32-32.07 C883.54,375.33,884.49,386.26,890.24,394.75 M960.13,458.55c-3.68,3.54-6.02,8.19-7.77,12.92c-2.49,7.01-4.06,14.79-1.71,22.07 c2.75,10.74,10.95,18.94,19.79,25.1c6.4,5.27,13.97,8.71,21.14,12.76c23,11.64,47.34,20.33,70.55,31.5 c6.52,3.6,13.63,6.06,19.81,10.28c10.24,5.99,20.46,12.58,28.05,21.85c2.5,3.51,5.14,6.93,7.41,10.6 c4.91,9.36,6.19,20.29,4.68,30.68c-3.2,18.69-9.69,36.57-15.02,54.71c-6.72,20.06-12.47,40.57-14.9,61.64 c-3.76,31.48,7.86,63.85,29.18,87.03c6.05,6.64,12.28,13.25,19.69,18.39c7.18,6.43,15.4,11.59,23.78,16.31 c15.9,9.79,33.43,16.51,50.94,22.76c15.3,3.93,30.04,9.68,44.64,15.63c10.63,4.79,20.97,10.19,31.33,15.56 c13.84,8.16,27.54,16.76,39.58,27.49c8.12,6.2,14.82,14.15,20.14,22.85c2.61,3.93,3.28,8.67,4.77,13.07 c0.86-7.26-2.85-14.23-6.71-20.12c-3.44-5.14-7.17-10.12-11.78-14.26c-14.73-15.1-32.24-27.18-50.62-37.39 c-17.62-10.36-36.48-18.42-55.72-25.21c-19.09-5.38-37.6-12.72-55.15-21.95c-17.51-8.86-33.88-20.3-47.54-34.45 c-7.84-7.39-13.65-16.56-19.34-25.62c-2.67-5.75-5.87-11.28-7.55-17.42c-4.22-10.34-5.38-21.59-5.98-32.63 c0.41-4.7,0.56-9.41,0.67-14.11c3.5-36.23,18.44-69.85,26.8-104.99c2.39-10.13,3.45-20.96,0.45-31.08 c-2.15-8.99-7.37-16.9-13.46-23.73c-9.64-10.37-21.56-18.36-33.88-25.19c-10.06-5.03-20.01-10.34-30.53-14.37 c-18.77-8.42-38.2-15.3-56.61-24.52c-7.94-4.5-16.26-8.54-23.06-14.73c-5.04-4.74-10.38-9.79-12.39-16.63 c-3.39-9.56-0.8-19.97,3.62-28.73C958.45,462.66,959.92,460.83,960.13,458.55 M1205.76,575.78c0.31,1.28,1.08,1.49,2.33,0.65 C1207.74,575.13,1206.96,574.92,1205.76,575.78 M1215.54,578.88c11.67,3.35,23.1,7.6,34.2,12.53 c17.05,7.66,33.94,17.35,45.66,32.26c0.01-10.08-5.43-19.74-13.92-25.12c-11.36-7.71-24.91-11.03-38.11-14.03 C1234.11,582.53,1224.84,580.59,1215.54,578.88 M1241.3,603.69c1.54,2.13,3.38,4.03,5.18,5.97c12.59,13.99,22.49,30.4,28.87,48.11 c6.2,16.55,8.76,34.23,9,51.84c2.65,9.74,4.3,19.85,3.63,29.97c-0.93,22.62-9.67,43.95-19.38,64.08 c-3.72,7.68-5.82,16.46-4.11,24.96c1.61,8.31,6.95,15.7,14.15,20.1c-4.54-16.33-4.7-33.6-1.62-50.21 c4.41-25.47,12.81-50.01,18.81-75.11c-3.88-1.23-6.73-4.38-7.78-8.28c-3.08-10.58-2.03-21.79-1.04-32.6 c1.23-13.12,5.09-25.81,7.1-38.8c-2.24-4.99-5.67-9.37-9.26-13.45C1273.17,617.51,1257.17,609.85,1241.3,603.69 M1299.14,657.58 c-5.32,16.49-10.07,33.57-9.64,51.05c0.3,4.92,1.11,11.6,6.72,13.2c3.22-14.52,6.05-29.3,5.75-44.24 C1301.74,670.88,1301.56,663.91,1299.14,657.58 M912.33,734.57c-8.41,18.38-11.39,39.19-8.56,59.19 c3.1,22.39,13.76,43.18,14.96,65.91c0.62,10.77-2.16,21.33-5.8,31.38c6.37,0.45,13.24-0.53,18.37-4.63 c7.69-6.07,11.86-17.32,7.82-26.63c-1.28-3.6-4.38-5.94-6.69-8.81c8.07,3.69,12.2,12.28,12.69,20.81 c1.2-7.25-0.78-14.46-3.35-21.18c-3.75-10.34-9.14-20-12.84-30.35c-3.84-11.43-5.68-23.62-4.54-35.66 c0.35-4.35,1.85-8.62,1.3-13.02c-1.44-18.72,3.32-37.49,11.53-54.23c2.66-5.73,6.21-10.96,9.18-16.51 C932.2,708.56,919.3,719.73,912.33,734.57 M1317.37,891.61c7.67,5.89,15.29,12.04,21.41,19.63c2.31,3.11,5.83,4.88,8.9,7.14 c7.48,5.39,14.14,11.88,19.76,19.2C1359.39,915.37,1339.67,898.53,1317.37,891.61 M959.24,904.32 c-8.57,15.24-18.69,29.62-30.44,42.57c1.97,4.39,5.67,7.92,9.14,11.23c3.62,3.02,7.18,6.35,11.53,8.3c5.18-2.69,10-6.05,15.08-8.93 c3.14-1.81,6.26-3.64,9.35-5.53c0.91-4.79,1.48-9.63,2.23-14.43c0.37-2.81,1.66-5.88-0.2-8.44c-4.91-8.78-7.57-18.51-11.48-27.7 c-0.08-1.36-0.19-2.72-0.32-4.05C961.72,899.02,960.74,901.91,959.24,904.32 M904.83,1012.33c-0.8,1.26-1.27,2.69-1.34,4.19 c-0.67,8.22-3.66,15.98-5.26,24.03c-2.56,6.86-4.48,13.94-7.17,20.76c-7.01,19.87-14.55,40.02-15.55,61.3 c-0.13,10.36-0.6,20.79,1.16,31.06c1.68,14.49,5.48,28.59,9.29,42.64c2.72,8.39,5.2,16.9,8.78,24.99 c9.09,25.19,22.77,49.21,25.66,76.26c0.65,8.04,1.22,16.2-0.86,24.11c-2.12,9.76-6.85,18.97-13.57,26.34 c-7.9,10.36-18.67,18.05-27.02,27.99c-5.56,8.57-10.67,18.07-10.6,28.58c-1.9,22.95,8.65,44.43,10.22,67.04 c0,8.48,0.66,17.29-2.7,25.31c-2.1,7.37-6.87,13.59-12.15,19c-6.96,6.19-15.21,10.64-23.79,14.17 c-18.92,8.14-39.64,13.04-56.44,25.43c2.39,0.02,4.33-1.45,6.34-2.54c4.81-2.71,9.96-4.73,15.02-6.91 c8.85-3.94,18.39-6.02,27.31-9.78c14.05-4.43,28.13-10.73,38.36-21.66c8.29-8.89,11.91-21.09,12.89-32.97 c1.04-19.78-5.46-38.77-8.94-58c-1.43-10.52-2.34-21.63,1.37-31.8c2.75-8.29,7.91-15.66,14.37-21.49 c13.86-13.54,28.44-28.33,32.96-47.86c4.46-19.92-0.33-40.44-6.09-59.58c-3.81-9.94-6.97-20.13-11.09-29.95 c-4.05-12.07-8.74-23.96-11.56-36.4c-5.54-20.89-9.71-42.29-9.9-63.96c-0.51-21.87,6.51-42.88,12.35-63.67 C901.65,1050.54,907.8,1031.51,904.83,1012.33 M918.95,1420.98c-4.14,10.83-2.13,22.63-0.65,33.77c9.02-3.1,18.38-6.2,25.84-12.37 c5.44-4.44,9.57-10.76,10.51-17.8c1.36-9.98-1.39-19.85-3.78-29.45C937.1,1398.31,924.3,1407.63,918.95,1420.98 M884.45,1521.72 c5.7-3.89,10.43-9.21,14.03-15.07C893.74,1511.61,889.1,1516.67,884.45,1521.72z"/>
5 <path fill="#6A281A" stroke="#6A281A" stroke-width="0.5" d="M557.46-9.52c7.25-1.59,14.58-2.95,22.03-2.9 c17.59,0.06,35.72,4.34,50,14.99c11.81,8.66,20.12,21.03,27.31,33.58c6.45,10.94,12.34,23,23.25,30.24 c1.47,2.17,3.73,3.53,5.63,5.27c-0.41,1.67-1.13,3.25-1.82,4.82c1.01,2.19,2.66,4.38,2.24,6.94c-1.07,8.67-0.73,17.45-0.48,26.16 c1.22,7.63,0.67,15.36,0.78,23.05c-0.04,11.68,0.17,23.36,0.03,35.04c-0.1,4.35,0.74,8.64,0.98,12.98c0.25,7.33-0.34,14.68,0.27,22 c0.75,5.64-0.83,11.32,0.32,16.95c-0.26,0.38-0.77,1.14-1.03,1.52c0.5,0.59,1.02,1.19,1.54,1.79c-22.61,1.1-45.54-1.19-67.17-8.04 c-21.13-6.54-41.4-17.77-55.52-35.12c-4.4,3.27-9.09,6.5-11.96,11.3c-3.64,5.91-7.12,12-11.97,17.02 c-6.83,7.44-15.75,12.68-25.24,15.98c-5.46,12.08-5.65,26.43-0.18,38.54c7.3,16.25,20.13,29.23,27.61,45.38 c5.96,12.17,7.52,26.57,3.3,39.54c-3.31,11.04-10.58,20.36-18.72,28.31c-7.27,7.44-15.86,14.11-20.37,23.74 c-3.8,8.11-3.31,18.1,1.43,25.72c5.01,8.26,13.22,13.93,21.65,18.28c-3.2,1.11-6.37-0.58-9.52-0.97 c-9.58-5.14-18.08-13.45-21.11-24.13c-2.12-8.51-1.32-17.87,2.92-25.62c7.64-14.42,22.07-23.78,29.59-38.28 c5.52-10.34,6.85-23.07,2.44-34.06c-5.38-13.89-16.08-24.64-24.57-36.6c-6.46-8.87-12.2-18.6-14.44-29.46 c-1.8-6.93-1.56-14.13-1.37-21.21c-10.95,7.8-17.21,21.12-17.39,34.44c-0.4,9.61,4.14,18.49,8.95,26.5c3.78,5.84,7.13,12,9.37,18.6 c3.89,11.17,4.65,23.13,4.51,34.86c0.2,17.11-3.03,34.63-11.58,49.62c-7.92,14.26-20.32,25.63-34.25,33.91 c-4.01,2.27-7.12,5.96-8.67,10.3c-3.07,8.32-2,17.4-0.47,25.93c1.19,7.01,3.92,13.89,3.09,21.12c-0.9,17.38-7.67,34.87-20.81,46.65 c-12.22,11.91-28.8,17.24-44.71,22.22c-11.1,3.85-22.8,7.43-31.86,15.25c-5.74,4.83-8.99,12.43-8.16,19.93 c0.93,8.6,4.79,16.6,9.35,23.84c7.65,11.58,20.23,18.29,31.85,25.2c7.65,4.52,15.24,9.32,21.82,15.33 c6.13,7.2,13.03,13.71,19.01,21.05c17.59,20.97,32.2,45.88,34.97,73.58c3.08,28.04-7.33,55.87-23.21,78.59 c-4.11,5.52-5.33,12.48-6.28,19.13c3.97-2.47,8.02-5.37,12.94-5.2c-2.47,1.57-5.18,2.7-7.63,4.29c-5.76,4.21-8.61,12.16-6.35,19.03 c2.34,8.68,9.99,14.61,17.95,17.96c10.43,4.35,21.56,7.04,32.83,7.98c11.93,1.39,24.02,1.91,35.91-0.17 c-1.24-0.23-2.48-0.47-3.69-0.67c-1.41-0.43-2.79-0.89-4.18-1.33c1.98-0.29,3.97-0.57,5.97-0.86c-1.78-0.29-3.55-0.57-5.32-0.75 c24.16-2.19,47.61-9.62,69.61-19.62c15.44-9.36,29.16-21.23,42.63-33.18c7.07-6.34,14.49-12.37,20.51-19.77 c6.1,5.22,11.53,11.17,17.15,16.89c13.21,13.4,26.57,26.65,39.85,39.98l0.25,0.29c-10.53,12.56-22.94,23.34-35.24,34.1 c-10.64,9.26-21.54,18.21-32.56,27.01c1.13-4.49,4.82-7.61,6.91-11.61c10.37-17.6,15.66-37.81,17.81-58.01 c1.44-10.38,1.61-20.93,0.93-31.37c-1.74,5.64-1.36,11.58-1.94,17.39c-2.34,19.58-5.66,39.43-14.2,57.37 c-3.48,8.09-8.16,15.64-13.41,22.69c-5.14,5.78-10.8,11.08-16.15,16.66c0.58,0.1,1.74,0.31,2.32,0.41 c-15.99,11.1-34.04,19.53-53.29,22.98c-16.75,3.03-34.19,4.01-50.94,0.44c-11.16-2.45-21.92-7.21-30.72-14.56 c5.12,0.84,9.44,4.17,14.65,4.75c9.33,2.23,18.96,0.78,28.1-1.62c8.15-2.61,16.09-6.7,21.77-13.25 c6.82-6.7,11.22-15.35,14.99-24.01c4.12-10.2,8.34-20.36,12.6-30.51c3.64-9.17,10.17-16.72,14.7-25.38 c-6.82,4.65-10.75,12.09-15.42,18.66c-6.73,11.04-11.87,22.95-17.17,34.72c-2.64,6.09-5.96,11.9-9.93,17.23 c-5.88,8.73-15.21,14.86-25.27,17.68c-11.83,4.06-25.13,3.79-36.76-0.83c-4.26-1.5-7.64-4.62-11.63-6.65 c-12.64-13.02-22.64-28.33-31.69-43.98c-4.2-7.12-7.81-14.57-12.3-21.49c-1.45,4.12-3.01,8.3-3.42,12.69 c0.44,5.21,1.91,10.29,3.33,15.31c3.15,16.77,7.85,33.25,13.39,49.38c4.32,11.52,8.94,23.38,17.43,32.53 c8.27,8.53,18.68,14.65,29.41,19.58c18.06,8.13,37.36,13.18,56.78,16.84c26.58,4.83,53.71,7.2,80.73,5.69 c6.7-0.74,13.76-0.74,19.97-3.7c5.08-2.43,7.07-8.39,6.9-13.68c-0.29-11.81-4.6-23.12-4.71-34.95c-0.06-5.63,1.36-11.68,5.52-15.73 c4.66-4.6,11.34-6.25,17.66-6.98c9.95-1.33,19.96,0.03,29.87,0.94c1.34,0.13,2.68,0.28,4.05,0.45c-0.52,2.31-0.88,4.69-0.6,7.08 c0.97,14.73,0.64,29.5,0.72,44.26c-0.08,4.1-0.13,8.23,0.56,12.3c0.72,3.9-0.31,7.85,0.09,11.78c1.12,12.94-0.73,26.02,1.21,38.9 c0.26,2.31-0.34,4.61-0.79,6.87c0.5,0.59,1.01,1.19,1.53,1.81c-0.1,0.17-0.31,0.52-0.42,0.69c-2.79,1.73-5.36,3.82-7.33,6.47 c-10.82,12.13-18.24,27.79-18.96,44.17c-1.87,17.96,2.52,36.05,9.44,52.55c4.79,10.67,11.38,20.36,18.13,29.87 c0.39,0.59,0.78,1.22,1.21,1.86c-1.22,5.15-0.61,10.45-0.66,15.69c0.07,8.01-0.16,16.03,0.02,24.05 c2.33,18.24-0.37,36.74,1.96,54.98c0.17,14-0.2,28.02,0.13,42.02c1.53,10.91,0.66,21.94,0.86,32.92 c0.16,10.67-0.07,21.34,0.1,32.02c1.59,12.57,0.76,25.28,0.9,37.92c0.29,4.14-1.8,9.53,1.83,12.69c-0.9,0.74-1.78,1.5-2.66,2.28 c-5.49,4.26-9.7,9.85-13.86,15.35c-6.55,9.11-10.4,20.48-9.18,31.76c0.8,12.39,7.61,23.06,12.86,33.95 c5.2,11.44,11.21,22.69,13.58,35.17c0.27-1.47,0.51-2.97,0.75-4.4c1.89,4.21-0.95,8.44-1.23,12.72c-3.28,2.58-6.14,5.63-8.55,9.04 c-9.32,12.9-20.62,25-25.52,40.47c-3.07,9.12-2.03,19.55,3.35,27.62c7.74,12.67,22.96,17.7,31.87,29.27 c4.79,6.13,6.2,14.91,2.85,22.04c-3.77,8.5-12.01,14.11-20.65,16.87c-1.37-0.44-2.69-0.79-4.02-1.16c0.32-0.57,0.97-1.71,1.29-2.28 c6.04-2.18,11.74-5.8,15.51-11.08c2.62-3.78,4.14-8.65,2.9-13.19c-1.18-4.57-4.56-8.16-8.21-10.93 c-8.18-6.24-17.78-10.57-25.09-17.93c-6.49-6.26-11.01-14.48-12.68-23.34c3.04,12.38,5.72,25.27,3.16,38.02 c-1.15,6.8-4,13.17-7.48,19.09c-4.23,8.04-6.98,17.9-3.37,26.69c3.14,8.36,10.54,14.13,18.31,17.98c-0.04,0.54-0.11,1.63-0.15,2.17 c-10.54-1.41-20.99-6.26-27.46-14.93c-7-8.98-8.71-20.91-7.64-31.97c0.41-6.73,3.3-13.21,2.44-20.01 c-1.02-9.21-5.91-17.39-11.03-24.88c-10.89-15.41-24.61-28.47-36.76-42.82c0.63,2.72,1.32,5.45,1.63,8.26 c-0.39,1.39-0.77,2.88-1.17,4.33c-0.69-1.09-1.35-2.16-1.99-3.22c-3.65-15.51-12.32-29.56-23.25-41 c-6.42-7.13-12.81-14.29-19.22-21.42c3.57,0.44,6.74,2.18,9.85,3.87c8.33,4.55,17.31,7.76,25.67,12.28 c18.42,8.37,36.76,18.35,50.58,33.46c8.31,8.64,13.99,19.61,16.75,31.25c0.65,2.21,0.72,4.89,2.78,6.38 c-1.68-15.08-8.28-29.42-18.41-40.7c-12.74-14.52-29.81-24.23-46.68-33.17c-10.58-5.6-21.74-10.02-32.1-16.03 c-4.09-2.26-8.47-3.99-12.28-6.73c-1.99-1.49-4.38-2.22-6.81-2.51c-11.41-11.18-24.48-20.47-37.58-29.53 c-0.73-3.89-3.78-6.6-5.9-9.74c-12.03-15.95-18.72-35.94-17.91-55.96c1.11-16.14,5.97-31.91,13.79-46.05 c17.07-33.13,47.84-55.86,68.78-86.19c17.74-25.56,28.36-56.53,27.43-87.82c0.48-10.72-1.26-21.41-4.52-31.59 c-6.18-18.18-15.3-35.52-27.82-50.13c-4.72-6.19-10.31-11.63-15.61-17.31c-5.64-6.03-12.17-11.14-17.87-17.11 c-7.24-7.46-15.03-14.41-21.76-22.34c-6.24-8-12.35-16.31-16.09-25.81c-8.74-19.64-9.51-41.53-16.03-61.83 c-0.74,5.79,0.97,11.49,1.24,17.26c1.72,20.58,4.18,42.08,15.27,60.02c4.76,8.57,11.55,15.7,17.9,23.08 c4.99,5.71,11.27,10.05,16.45,15.57c18.49,16.9,37.9,34.24,48.39,57.52c4.84,11.29,7.27,23.5,8.29,35.7 c3.88,30.15-2.03,61.56-16.91,88.09c-9.66,19.29-24.66,35.07-38.72,51.17c-11.24,12.34-21.5,25.55-30.38,39.69 c-9.08,15.19-15.82,31.91-18.46,49.49c-1.88,17.28,0.06,35.32,7.97,51c1.76,5.15,5.91,9,7.71,14.11 c-13.34-7.86-26.95-15.36-41.1-21.67c10.54,10.62,20.74,21.88,27.83,35.16c5.01,9.49,8.39,20.17,7.79,31 c-0.49,8.84-3.69,17.49-9.03,24.55c-7.04,9.65-17.1,17.06-22.18,28.11c-0.74-1.3-1.48-2.57-2.21-3.82 c4.6-10.59,13.31-18.53,19.28-28.26c4.72-7.58,6.82-16.85,5.28-25.69c-2.14-12.56-9.59-23.44-17.93-32.74 c-18.08-19.76-40.86-34.21-62.48-49.69c-6.91-5.38-15.53-7.62-23.22-11.57c-18.77-8.72-37.02-18.89-53.1-32 c-12.97-10.44-24.31-23.05-32.63-37.51c-0.78-1.28-1.58-2.52-2.43-3.72c3.87,15.18,10.69,29.69,20.31,42.09 c11.72,14.81,28.02,24.77,42.64,36.38c13.51,10.08,27.88,19.11,40.21,30.69c0.09,0.94,0.17,1.9,0.25,2.88 c-0.36,0.13-1.08,0.39-1.44,0.52c-13.89-11.71-30.12-20.05-45.23-29.97c-12.65-8.64-26.16-16.16-37.58-26.47 c-13.14-11.85-22.85-27.14-29.57-43.41c-7-16.98-11.08-35.07-13.02-53.3c-1.6-19.93,3.84-39.63,10.51-58.22 c7.85-21.31,18.13-41.65,29.64-61.19c2.24-4.9,1.82-10.5,2.06-15.74c-12.65,13.78-27.71,24.97-42.15,36.76 c-10.71,8.85-21.3,18.2-29.05,29.86c-6.11,8.99-9.9,19.57-10.66,30.44c-0.69,6.48,0.42,12.95,0.88,19.42 c-4.11-12.83-4.92-26.89-1.21-39.91c3.52-12.92,11.01-24.32,19.48-34.52c13.88-16.69,30.64-30.75,44.18-47.73 c5.62-7.39,11.45-15.13,14.09-24.12c-3.8-17.41-10.28-34.1-15.78-51.01c-6.45-18.93-12.29-38.18-15.12-58.02 c-3.41-24.46-1.73-49.98,7.2-73.15c-4.86,2.56-10.11,4.46-15.61,4.96c-5.34,0.55-11.04,0.38-15.82,3.22 c-7.67,4-11.31,14.49-7.56,22.29c4.12,6.31,8.34,12.61,11.54,19.47c8.7,17.26,10.94,37.24,8.41,56.25 c-2.48,18.04-11.01,34.91-23.08,48.42c-12.48,13.96-28.21,24.7-44.91,32.99c-4.13,2.17-8.99,3.4-12.04,7.19 c-0.19-1.46-0.53-2.93-0.23-4.37c2.9-12.33,7.35-24.33,13.53-35.41c4.6-9.41,11.44-17.48,16.38-26.7c2.45-4.84,5.32-9.45,7.6-14.36 c4.72-11.27,8.04-23.54,6.75-35.85c-1.58-16.59-7.66-32.24-12.73-47.98c-3.51-10.6-6.8-21.28-10.07-31.96 c-4.01-13.33-6.31-27.18-6.87-41.08c-0.48-25.31,6.44-50.47,18.49-72.64c5.77-10.85,12.72-21.04,20.38-30.63 c16.31-22.05,36.33-40.98,56.97-58.9c16.75-14.48,35.02-27.62,48.66-45.3c8.84-11.23,16.35-24.03,19-38.23 c3.75-16.23,0.58-33.46-6.36-48.4c-13.67-31.61-38.52-56.56-53.65-87.35c-2.2-5.79-4.37-12.05-3.1-18.31 c1.65-8.77,8.23-15.92,15.98-19.96c15.23-8.87,32.76-12.23,49.63-16.55c11.08-2.94,22.43-5.2,32.95-9.89 c7.39-2.66,15.27-6.98,18.07-14.81c4.29-11.36,0.82-23.58-1.26-35.02c-1.72-10.61-4.13-21.24-3.79-32.05 c0.34-15.97,6.69-31.79,17.73-43.36c8.84-10.1,20.05-17.69,31.51-24.49c5.82-3.26,10.78-7.91,14.86-13.15 c3.22-5.28,4.33-11.92,2.68-17.92c-2.67-11.22-9.81-20.54-15.33-30.45c-9.27-15.17-18-30.98-22.72-48.24 c-2.55-9.18-4.7-18.77-3.39-28.35c1.59-10.66,7.43-20.27,14.97-27.8c11.25-10.19,24.51-18.05,38.69-23.42 c18.86-8.24,39.08-12.48,59.15-16.55c-8.55-0.72-16.91,1.82-25.22,3.45c-15.71,3.11-30.95,8.21-45.68,14.42 c-8.66,4.39-17.5,8.72-24.95,15.03c-10.62,7.98-18.73,19.69-21.34,32.81c-1.95,9.07-0.4,18.44,1.66,27.36 c4.55,18.56,12.68,36.11,22.77,52.3c5.93,10.07,12.94,19.81,15.82,31.32c1.65,5.8-0.65,12.26-4.9,16.38 c-3.95,3.78-8.33,7.14-13.22,9.63c-8.89,4.78-16.42,11.53-24.16,17.91c-12.73,12.49-22.21,29.09-23.11,47.2 c-1.48,10.68,0.88,21.34,2.6,31.85c2.3,12.16,6.43,24.42,4.45,36.93c-1.43,8.3-9.35,13.28-16.47,16.42 c-27.41,11.33-58.21,13.07-84.33,27.75c-7.55,4.67-14.43,11.82-15.87,20.9c-1.4,10.81,2.81,21.43,8.68,30.3 c6.92,12.19,14.89,23.72,22.63,35.39c9.53,15.43,20.26,30.45,26.24,47.73c4.83,13.59,6.15,28.69,2.25,42.67 c-3.38,13.48-11.31,25.21-20.1,35.74c-12.25,14.17-27.05,25.77-41.66,37.38c-5.28,4.74-10.76,9.26-16.01,14.04 c-8.07,6.54-14.93,14.38-22.39,21.57c-8.59,8.15-16.13,17.32-23.51,26.55c-15.81,19.64-28.66,41.99-35.64,66.32 c-3.34,11.51-5.01,23.45-5.49,35.42c-0.41,24.78,6.3,48.97,14.72,72.06c3.73,11.28,7.58,22.51,11.31,33.8 c3.19,9.71,5.46,19.86,5.1,30.15c0.24,11.08-3.9,21.67-8.67,31.48c-7.02,15.25-17.97,28.39-24.1,44.09 c-5.46,11.06-8.34,23.17-10.33,35.28c-0.57,2.16,0.01,4.24,1.29,6.05c-2.89,18.55,3.29,36.76,5.14,55.07 c0.49,20.3-3.62,41.34-14.99,58.45c-9.92,15.01-25.14,25.92-41.77,32.4c-12.6,4.8-25.91,8.24-39.4,9 c16-4.81,31.76-11.91,44.27-23.2c12.87-11.71,20.31-28.52,22.4-45.63c2.96-23.06-1.96-46.43-10.21-67.93 c-6.98-18.77-9-39.48-4.74-59.11c1.91-9.97,5.56-19.46,8.85-29.02c-8.83,13.59-23.35,22.71-30.56,37.47 c-5.05,9.69-6.01,21.07-3.98,31.71c4.83,27.74,22.01,51.33,28.06,78.7c3.63,16.36-0.78,34.16-11.71,46.88 c-6.43,7.73-14.66,13.75-23.45,18.55c-9.63,5.34-19.24,11.38-30.24,13.41c-16.05,3.19-33.79,2.11-47.85-6.96 c-7.15-4.49-13.61-11.07-15.58-19.52c-2.05-8.65,0.94-17.6,5.51-24.93c7.39-11.79,18.21-21.06,30.03-28.23 c0.05,0.1,0.16,0.3,0.21,0.39c-2.41,1.43-4.83,3.2-5.78,5.98c-1.74,4.76,0.41,9.84,3.13,13.77c5.94,8.32,14.35,15.21,24.34,17.94 c9.62,2.94,21.12,1.81,28.78-5.16c6.43-5.69,8.79-14.63,8.55-22.95c-0.44-13.4-6.42-25.84-13.63-36.87 c-9.27-14.28-20.98-26.95-28.71-42.23c-10.42-19.93-16.65-42.38-15.95-64.97c0.17-8.23,2.23-16.27,4.81-24.04 c3.67-10.6,8.86-20.93,16.92-28.89c-14.54,8.77-24.58,22.77-35.02,35.77c-11.32,14.34-26.66,24.63-39.27,37.7 c-11.03,10.85-19.35,24.98-21.57,40.44c-0.95,7.57-0.18,16.02,4.98,22.04c8.03,9.4,22.96,11.72,33.61,5.58 c6.55-3.79,10.85-10.39,13.88-17.13c3.09-7.09,5.47-14.46,8.85-21.42c-0.47,7.08,1.92,13.92,1.96,20.99 c1.18,12.24-1.86,25.07-9.58,34.8c-9.56,12.57-25.16,19.62-40.76,20.25c-18.51,1.33-38.5-6.35-48.47-22.6 c-9.98-16.68-11.07-37.82-4.97-56.06c5.59-17.2,16.8-31.94,29.69-44.37c-5.65,1.11-11.42,1.97-17.18,1.31 c-1.48-0.3-4.2-0.26-3.55-2.71c9.31,1.05,18.57-1.43,27.02-5.18c2.88-1.24,5.21-3.38,7.57-5.37c8.33-7.08,17.28-13.38,26-19.95 c5.47-5.63,9.64-12.65,11.93-20.16c2.03-6.55,0.33-13.4-1.07-19.88c-3.54-14.64-9.59-28.53-13.1-43.18 c-1.61-6.8-3.37-14.09-0.71-20.87c2.55-7.48,9.59-11.85,15.88-15.93c4.92-3.04,9.37-6.78,13.26-11.05 c-3.04-20.38-1.81-41.65,5.57-61.02c-5.32-8.64-11.89-16.65-15.65-26.16c-3.22-7.87-2.6-17.33,2.34-24.35 c6.04-8.71,15.29-14.55,24.5-19.43c17.25-8.83,36.25-13.31,55-17.68c11.73-2.89,23.96-4.81,34.7-10.65 c7.1-3.83,13.89-10.26,14.49-18.77c0.49-8.01-2.31-16.04-6.45-22.79c-17.86-20.91-29.66-46.87-33.62-74.09 c-2.76-17.69-1.59-35.73,1.59-53.28c-4.96,16.88-5.19,34.71-4.23,52.15c0.75,16.96,6.71,33.09,8.33,49.93 c0.75,12.64-3.45,25.2-10.3,35.72c-8.04,12.43-20.05,22.48-34.2,27.18c0.62-1.27,1.25-2.53,1.87-3.78 c17.36-8.58,30.05-25.87,33.46-44.87c2.7-15.09-4.39-29.33-8.12-43.57c-3.82-14.2-5.97-28.83-6.39-43.52 c-0.88-20.2,1.82-41.2,11.84-59.07c8.34-15,22.04-27.44,38.6-32.53c4.86-5.71,9.98-11.22,15.6-16.19 c6.13-5.28,13.77-8.28,20.24-13.09c0.36,1.3,0.38,2.66-0.66,3.68c-4.84,6.08-10.46,11.55-16.62,16.29c-2.34,1.78-4.6,3.71-6.4,6.05 c8.92-3.38,15.17-11.11,22.18-17.26c11.97-12,20.12-27.54,24.32-43.89c5.81-20.49,5.02-42,4.52-63.06 c-0.9-8.64-0.53-17.34-1.47-25.97c-0.69-7.1-0.11-14.25-0.84-21.34c-1.1-11.6,0.22-23.2,0.68-34.79 c1.42-13.36,4.15-26.99,11.17-38.64c9.18-17.97,25.11-31.08,41.08-42.82c11.22-7.74,22.31-15.68,33.32-23.72 c14.33-10.94,27.62-23.89,36-40.05c3.33-6.7,6.33-13.62,7.98-20.95c4-16.32,9.45-32.46,18.2-46.88c5.2-7.58,10.33-15.48,17.7-21.17 c4.67-3.9,9.97-6.94,15.37-9.71c5-2.57,10.65-3.22,16.03-4.65c-7-0.72-13.77,1.95-20.04,4.74c-12.22,6.02-22.62,15.51-30.11,26.86 c-9.77,14.26-16.33,30.48-20.55,47.19c-5.2,20.51-17.48,39.03-34.03,52.17c-11.31,9.96-24.16,17.97-36.65,26.34 c-11.28,8.3-23.05,16.09-32.84,26.18c-5.33,6.06-10.87,12.04-14.87,19.1c-7.47,12.14-11.79,26.03-13.63,40.11 c-2.6,25.94-1,52.07,0.83,78c0.91,14.22,2.29,28.46,1.61,42.72c-0.05,2.11-0.54,4.18-1.47,6.07c-1.43-6.39-3.44-12.68-6.58-18.45 c-3.57-7.11-9.11-12.91-13.92-19.17c-6.23-7.36-11.29-15.6-15.91-24.04c-2.44,10.34-1.74,21.55,2.86,31.21 c6.2,13.12,15.96,24.51,20.12,38.59c2.13,7.34,2.35,15.27,0.63,22.71c-2.83,10.11-12.38,17.29-22.4,19.34 c-9.04,1.86-18.8,2.15-27.44-1.57c-7.23-3.07-14.56-7.49-18.28-14.69c-4.18-8.56-3.83-19.62,2.25-27.2 c5.78-7.11,16.42-9.38,24.7-5.61c4.6,1.99,8,5.92,10.53,10.15c-2.75-2.9-5.19-6.25-8.82-8.12c-7.41-4.18-17.57-2.54-23.22,3.86 c-5.88,6.55-6.13,16.75-2.13,24.32c3.39,6.42,10.31,9.82,16.84,12.24c7.92,3.05,16.72,1.99,24.71-0.22 c7.07-2.19,13.88-7.7,15.3-15.27c0.76-6.61,0.1-13.53-2.74-19.61c-5.98-13.41-16.65-24.08-22.59-37.53 c-6.74-15.06-6.23-32.71-0.43-47.99c0.82-2.46,2.49-5.01,1.32-7.65c-9.64-33.53-5.15-70.81,11.85-101.24 c14.29-25.81,38.02-46.43,65.98-56.09c10.83-4.08,22.62-4.95,33.25-9.65c7.04-3.02,13.3-7.64,18.66-13.08 c-16.28-0.76-32.57-3.2-48.87-1.43c-20.79,2.19-41.39,7.63-60.02,17.22c-14.13,7.37-27.31,17.85-34.64,32.3 c-0.72-0.14-2.18-0.44-2.91-0.58c4.64-13.08,14.01-23.93,24.68-32.55c12.94-10.29,27.89-17.8,43.35-23.53 c15.52-5.6,31.73-9.6,48.24-10.63c14.03-0.93,28.23-0.12,42.09-2.89c0.9-5.3,1.09-10.69,1.89-16 c3.17-21.39,13.08-41.69,27.84-57.48c21.11-22.85,52.46-35.85,83.57-34.28c12.16,0.73,23.86,4.9,36.06,5.29 c10.79,0.23,22-2.91,30.1-10.29c9.52-8.63,14.31-21.51,14.81-34.17c0.94-20.78,8.54-40.84,20.08-58.02 c-14.59,12.85-19.99,32.25-29.83,48.4c-5.49,8.79-11.5,18.16-21.16,22.8c-11.88,5.68-25.82,4.85-38.27,1.73 c0.03-0.46,0.1-1.37,0.14-1.83c5.69,0.11,11.37,1.09,17.07,0.45c9.58-0.6,19.56-4.17,25.59-11.98c11.17-14.49,15.21-32.71,22.89-49 c5.29-11.77,13.37-22.42,24.04-29.81C519.8-0.6,538.52-6.8,557.46-9.52 M548.27,71.38c-12.71,10.55-23.56,23.89-29.64,39.37 c0.98-0.26,1.78-0.79,2.42-1.59c5.37-6.58,10.37-13.53,16.68-19.28c16.2-15.73,35.7-30.05,58.68-33.08 c9.36-1.11,18.82,1.56,27.07,5.88c7.83,4.99,15.64,10.22,24.41,13.48c9.57,4.56,19.98,7.22,30.52,8.25 c2.53,0.3,5.01-0.47,7.28-1.55c-2.25-1.05-4.75-1.1-7.13-1.51c-16.27-4.12-31.13-12.19-46.74-18.16 c-6.47-2.45-12.72-5.56-19.42-7.33c-8.46-1.97-17.24-2.84-25.89-1.92C572.4,55.94,559.37,62.64,548.27,71.38 M257.74,338.95 c-6.56,3.16-13.17,6.48-18.59,11.42c-8.33,6.14-14.13,15.06-18.67,24.24c-4.39,10.77-7.33,22.3-7.12,34 c0.13,8.06-0.37,16.16,0.74,24.17c3.18,37.81,13.69,74.66,15.79,112.6c1.22,13.24-0.14,26.79-4.1,39.49 c-2.42,5.83-5.19,11.82-10.03,16.06c-5,5.44-11.37,9.25-17.12,13.81c-18.31,13.43-37.54,26.36-51.85,44.24 c-9.79,12.45-16.38,27.73-16.91,43.7c0.45,11.46,0.91,23.3,5.46,34.01c-0.03-4.11-1.6-7.98-1.95-12.05 c-1.93-13.32-1.53-27.21,3.15-39.95c5.06-15.03,16.33-26.75,27.76-37.25c16.16-13.82,34.38-24.91,51.32-37.72 c5.67-4.71,10.54-10.44,13.81-17.08c3.53-7.68,5.63-15.96,6.59-24.34c2.19-23.99-1.76-47.92-5.97-71.46 c-4.99-29.9-12.53-59.7-11.82-90.22c-0.08-10.92,1.97-21.89,6.37-31.92c2.23-6.5,6.95-11.61,10.82-17.14 c2.32-3.36,5.95-5.4,8.87-8.17c6.47-5.76,14.69-8.84,22.34-12.6C263.55,336.88,260.51,337.6,257.74,338.95 M386.47,655.6 c1.24,3.5,3.65,6.39,5.48,9.6c6.32,10.66,12.7,21.39,16.91,33.09c1.86,5.79,4.52,11.33,5.6,17.35c3.47,13.79,3.68,29.84-5.14,41.75 c-6.8,9.11-14.28,17.71-22.66,25.4c-7.72,6.32-14.93,13.29-23.2,18.92c-7.46,6.26-15.7,11.53-23.17,17.79 c-11.32,8.19-22.04,17.18-32.11,26.86c-6.17,6.54-12.18,13.26-17.63,20.43c-10.13,14.44-17.14,30.81-22.7,47.48 c-4.15,10.12-6.49,20.87-9.21,31.44c-4.97,22.92-7.2,46.77-3.56,70.05c0.72-10.02-0.26-20.1,0.73-30.11 c2.93-32.33,12.98-63.67,26.59-93.01c6.03-12.6,14.15-24.15,23.47-34.52c5.72-6.95,12.87-12.5,19.44-18.6 c8.03-5.91,15.32-12.77,23.5-18.49c13.48-10.09,27.04-20.16,39.4-31.62c4.23-4.45,8.73-8.63,12.96-13.07 c7.1-8.47,14.93-16.92,18.27-27.7c3.97-14.03,1.23-28.94-3.72-42.35c-5.1-15.01-13.73-28.44-22.2-41.72 C391.39,661.42,389.52,657.97,386.47,655.6 M410.1,808.27c-5.53,9.47-11.5,18.88-19.74,26.25c-6.92,6.05-12.76,13.28-20.08,18.88 c-5.11,4.9-10,10.04-15.05,15c-4.38,3.99-7.64,9.01-12.03,13c-7.06,8.38-14.25,16.81-19.48,26.5 c-6.28,10.25-10.4,21.64-13.81,33.12c-6.27,23.04-9.45,46.82-11.25,70.6c-0.58,20.02-0.31,40.11,2.44,59.97 c3.22,20.46,9.16,40.42,16.72,59.68c8.57,22.52,18.17,44.77,23.92,68.25c6,23.84,7.08,49.4-0.42,73.04 c-12.03,36.88-39.87,66.03-52.11,102.82c-2.4,7.51-4.79,15.29-4.6,23.25c3.47-7.88,5.46-16.32,8.41-24.39 c6.93-14.97,16.58-28.44,26.59-41.48c4.34-5.99,9.33-11.52,13.21-17.83c3.3-5.37,7.29-10.39,9.69-16.27 c1.91-4.59,4.67-8.78,6.47-13.41c1.62-4.16,2.92-8.42,4.33-12.63c7.18-23.42,6.26-48.51,1.53-72.3 c-2.89-11.74-5.63-23.57-10.19-34.79c-2.96-8.56-6.33-16.97-9.89-25.29c-4.5-8.67-7.63-17.97-12.37-26.52 c-4.37-11.21-9.67-22.2-11.77-34.13c-2.64-10.36-3.38-21.06-4.65-31.64c-0.91-6.07-0.37-12.24-1.26-18.32 c-0.84-23.84,1.29-47.91,7.65-70.95c5.4-20.38,14.76-39.77,27.9-56.29c5.49-6.13,10.76-12.46,16.43-18.43 c7.66-8.03,16.06-15.37,23.08-24c12.72-12.87,22.02-28.58,30.78-44.29c8.3-15.01,17.58-29.53,24.94-45.03 C422.69,779.79,417.93,795.37,410.1,808.27 M616.56,850.65c-5.88,10.51-10.2,21.8-13.7,33.3c-6.37,19.73-8.89,41.11-20.3,58.87 c-9.07,14.87-24.75,24.45-41.07,29.53c4.11,0.04,8.31-0.15,12.25-1.44c7.76-3.45,15.31-7.6,21.6-13.37 c4.94-3.44,8.16-8.61,11.53-13.47c8.69-13.3,11.93-29.06,15.91-44.19c4.14-17.37,9.19-34.64,17.2-50.66 c1.19-3.74,4.05-6.81,4.59-10.74C620.82,841.75,619.01,846.46,616.56,850.65 M414.14,854.42c-11.15,11.51-23.75,21.61-34.06,33.89 c-18.55,18.78-34.87,40.81-42.57,66.38c-2.55,8.71-3.6,17.84-3.17,26.91c-0.14,12.77,3.28,25.26,8.23,36.93 c4.63,12.21,11.48,23.4,18.64,34.27c9.06,14.07,19.75,26.98,29.55,40.51c11.12,15.62,21.46,32.18,27.27,50.57 c4.17,12.49,7.49,25.46,7.64,38.7c0.09,7.36,0.23,14.8-1.36,22.05c-2.61,12.78-6.26,25.39-11.38,37.41 c-4.02,9.08-7.36,18.46-11.88,27.32c-8.15,17.82-16.01,35.9-21,54.9c-6.35,22.08-9.39,45.87-3.81,68.44 c4.73,19.61,15.91,37.04,29.29,51.88c1.23,1.09,2.82,2.46,4.6,1.7c2.33-0.54,4.04-3.61,2.32-5.62c-2.71-3.65-5.79-7.02-8.24-10.86 c-9.5-13.57-12.86-30.14-15.81-46.13c-2.05-12.27-4.2-24.63-3.9-37.12c0.23-10.98,3.21-21.65,6.78-31.95 c10.14-31.78,25.33-61.78,33.88-94.09c6.58-23.98,7.49-49.68,1.33-73.83c-3.95-16.82-11.92-32.38-21.43-46.68 c-11.4-18.49-24.5-35.88-35.16-54.82c-3.12-5.14-4.99-10.89-7.78-16.2c-5.62-12.11-8.66-25.26-10.58-38.42 c-0.43-9.77-0.85-19.74,1.44-29.33c1.97-10.61,5.87-20.79,10.68-30.41c9.1-18.56,22.43-34.61,36.05-49.98 c5.51-5.42,10.76-11.08,16.07-16.68c0.1-0.6,0.22-1.19,0.34-1.76c3.4-0.83,7.49-5.51,4.18-8.59 C418.65,851.61,415.63,852.6,414.14,854.42 M133.33,856.09c-7.83,3.67-16.4,5.28-24.84,6.86c-25.52,4.89-52.45,7.93-75.04,21.79 c-7.35,4.62-15.65,11.29-15.29,20.89c0.8,10.7,7.34,19.68,11.92,29.04c2.02-3.49,3.58-7.23,5.66-10.68 c13.35-23.46,35.66-41.67,61.37-49.89c7.73-2.64,16.1-3.45,23.31-7.49C125.24,863.85,130.01,860.62,133.33,856.09 M18.44,1017.55 c-4.49,3.17-9.55,5.65-13.41,9.63c-3.07,3.28-3.84,8.09-2.92,12.39c3.39,21.74,14.37,41.83,15.14,64.06 c0.39,5.9-1.84,11.44-3.84,16.86c7.82-5.28,14.77-11.92,19.94-19.85c11.06-16.54,13.75-37.88,8.82-56.99 c-1.95-8.02-8.08-13.89-11.7-21.09c-2-3.2-2.91-6.97-5-10.08C22.9,1013.84,20.89,1016,18.44,1017.55z"/>
6 <path fill="#59291E" stroke="#59291E" stroke-width="0.5" d="M912.54,29.34c7.56-0.19,14-4.65,21.09-6.68 c-6.21,3.14-12.17,7.13-19.05,8.62c-6.44,1.44-13.1-0.82-18.21-4.75c0.56-1.15,1.13-2.3,1.71-3.45 C902.05,26.59,907.03,29.64,912.54,29.34z"/>
7 <path fill="#6D3322" stroke="#6D3322" stroke-width="0.5" d="M772.39,47.24c7.04-1.37,14.23-0.24,21.13,1.38 c11.3,3.83,21.4,10.71,29.88,19.04c21.96,21.39,36.29,49.34,58.86,70.18c7.11,5.85,15.54,10.35,24.56,12.38 c8.21,0.92,16.73,1.01,24.74-1.33c6.14-1.47,11.77-4.48,17.85-6.16c-3.27,3.63-8.06,5.27-12.26,7.55 c-8.71,3.64-18.12,6.19-27.63,5.4c-10.12,0.54-19.24-4.69-27.7-9.56c-5.46-4.84-11.38-9.22-15.95-14.97 c-13.95-17-25.25-35.95-38.12-53.74c-3.44-4.52-7.22-8.76-11.46-12.55c-4.2-4.8-9.95-7.78-15.53-10.65 c-14.14-7.23-31.8-3.77-44.3,5.23c-7.64,4.48-13.7,11.05-19.81,17.34c-7.13,8.7-14.2,17.54-19.55,27.48 c-0.86,1.78-2.1,3.32-3.67,4.51c0.69-7.04,5.38-12.8,8.06-19.17c4.22-6.92,8.77-13.67,14.06-19.83 C745.42,59.14,757.61,49.4,772.39,47.24z"/>
8 <path fill="#7A3623" stroke="#7A3623" stroke-width="0.5" d="M548.27,71.38c11.1-8.74,24.13-15.44,38.24-17.44 c8.65-0.92,17.43-0.05,25.89,1.92c6.7,1.77,12.95,4.88,19.42,7.33c15.61,5.97,30.47,14.04,46.74,18.16 c2.38,0.41,4.88,0.46,7.13,1.51c-2.27,1.08-4.75,1.85-7.28,1.55c-10.54-1.03-20.95-3.69-30.52-8.25 c-8.77-3.26-16.58-8.49-24.41-13.48c-8.25-4.32-17.71-6.99-27.07-5.88c-22.98,3.03-42.48,17.35-58.68,33.08 c-6.31,5.75-11.31,12.7-16.68,19.28c-0.64,0.8-1.44,1.33-2.42,1.59C524.71,95.27,535.56,81.93,548.27,71.38z"/>
9 <path fill="#522A22" stroke="#522A22" stroke-width="0.5" d="M950.35,68.04c5.23-6.6,15.79-8.94,22.4-3.02 c-2.94-1.05-5.98-2.48-9.17-1.84c-4.5,0.62-8.14,3.8-10.56,7.47C952.12,69.78,951.23,68.91,950.35,68.04z"/>
10 <path fill="#6D3322" stroke="#6D3322" stroke-width="0.5" d="M753.73,98.89c10.82-6.25,23.46-10.69,36.1-8.72 c11.23,1.58,22.21,6.71,29.91,15.16c7.49,7.17,13.08,15.99,18.17,24.95c4.31,6.47,7.33,13.7,11.99,19.96 c6.25,10.03,14.21,19.57,25.03,24.84c9.58,4.13,20.26,4.12,30.49,3.43c21.56-2.68,40.89-13.2,60.72-21.28 c10.48-3.82,21.19-7.29,32.33-8.54c5.6-1.15,11.36-1.23,17.02-0.33c7.96,0.6,15.74,2.85,23.04,6.03 c-4.44,0.21-8.66-1.51-13.04-1.85c-10.09-1.78-20.52-1.09-30.38,1.59c-22.06,4.88-41.46,17.11-62.62,24.54 c-10.86,4.18-22.47,6.29-34.07,6.8c-9.55-0.74-19.69-1.38-27.98-6.69c-8.81-4.61-14.82-12.89-19.96-21.13 c-5.61-9.79-10.84-19.8-16.46-29.59c-7.16-11.76-16-23.61-29.15-28.99c-15.51-6.73-33.99-3.99-48.13,4.78 c-10.17,5-18.67,12.61-27.06,20.08c-4.59,4.38-8.97,8.95-13,13.84c-3.83,3.28-5.84,8.35-10.17,11.04c2.01-4.99,5.3-9.38,8.43-13.73 c4.64-5.67,8.8-11.8,14.29-16.71C736.52,110.89,744.4,103.76,753.73,98.89z"/>
11 <path fill="#793623" stroke="#793623" stroke-width="0.5" d="M374.42,156.67c6.27-2.79,13.04-5.46,20.04-4.74 c-5.38,1.43-11.03,2.08-16.03,4.65c-5.4,2.77-10.7,5.81-15.37,9.71c-7.37,5.69-12.5,13.59-17.7,21.17 c-8.75,14.42-14.2,30.56-18.2,46.88c-1.65,7.33-4.65,14.25-7.98,20.95c-8.38,16.16-21.67,29.11-36,40.05 c-11.01,8.04-22.1,15.98-33.32,23.72c-15.97,11.74-31.9,24.85-41.08,42.82c-7.02,11.65-9.75,25.28-11.17,38.64 c-0.46,11.59-1.78,23.19-0.68,34.79c0.73,7.09,0.15,14.24,0.84,21.34c0.94,8.63,0.57,17.33,1.47,25.97 c0.5,21.06,1.29,42.57-4.52,63.06c-4.2,16.35-12.35,31.89-24.32,43.89c-7.01,6.15-13.26,13.88-22.18,17.26 c1.8-2.34,4.06-4.27,6.4-6.05c6.16-4.74,11.78-10.21,16.62-16.29c1.04-1.02,1.02-2.38,0.66-3.68c7.2-5.25,12.13-12.97,15.9-20.9 c5.46-11.98,7.03-25.55,4.91-38.5c0.93-1.89,1.42-3.96,1.47-6.07c0.68-14.26-0.7-28.5-1.61-42.72c-1.83-25.93-3.43-52.06-0.83-78 c1.84-14.08,6.16-27.97,13.63-40.11c4-7.06,9.54-13.04,14.87-19.1c9.79-10.09,21.56-17.88,32.84-26.18 c12.49-8.37,25.34-16.38,36.65-26.34c16.55-13.14,28.83-31.66,34.03-52.17c4.22-16.71,10.78-32.93,20.55-47.19 C351.8,172.18,362.2,162.69,374.42,156.67z"/>
12 <path fill="#7A3623" stroke="#7A3623" stroke-width="0.5" d="M513.31,173.34c8.31-1.63,16.67-4.17,25.22-3.45 c-20.07,4.07-40.29,8.31-59.15,16.55c-14.18,5.37-27.44,13.23-38.69,23.42c-7.54,7.53-13.38,17.14-14.97,27.8 c-1.31,9.58,0.84,19.17,3.39,28.35c4.72,17.26,13.45,33.07,22.72,48.24c5.52,9.91,12.66,19.23,15.33,30.45 c1.65,6,0.54,12.64-2.68,17.92c-4.08,5.24-9.04,9.89-14.86,13.15c-11.46,6.8-22.67,14.39-31.51,24.49 c-11.04,11.57-17.39,27.39-17.73,43.36c-0.34,10.81,2.07,21.44,3.79,32.05c2.08,11.44,5.55,23.66,1.26,35.02 c-2.8,7.83-10.68,12.15-18.07,14.81c-10.52,4.69-21.87,6.95-32.95,9.89c-16.87,4.32-34.4,7.68-49.63,16.55 c-7.75,4.04-14.33,11.19-15.98,19.96c-1.27,6.26,0.9,12.52,3.1,18.31c15.13,30.79,39.98,55.74,53.65,87.35 c6.94,14.94,10.11,32.17,6.36,48.4c-2.65,14.2-10.16,27-19,38.23c-13.64,17.68-31.91,30.82-48.66,45.3 c-20.64,17.92-40.66,36.85-56.97,58.9c-7.66,9.59-14.61,19.78-20.38,30.63c-12.05,22.17-18.97,47.33-18.49,72.64 c0.56,13.9,2.86,27.75,6.87,41.08c3.27,10.68,6.56,21.36,10.07,31.96c5.07,15.74,11.15,31.39,12.73,47.98 c1.29,12.31-2.03,24.58-6.75,35.85c-2.28,4.91-5.15,9.52-7.6,14.36c-4.94,9.22-11.78,17.29-16.38,26.7 c-6.18,11.08-10.63,23.08-13.53,35.41c-0.3,1.44,0.04,2.91,0.23,4.37c-1.36,2.6-2.45,5.34-3.15,8.2c-1.28-1.81-1.86-3.89-1.29-6.05 c1.99-12.11,4.87-24.22,10.33-35.28c6.13-15.7,17.08-28.84,24.1-44.09c4.77-9.81,8.91-20.4,8.67-31.48 c0.36-10.29-1.91-20.44-5.1-30.15c-3.73-11.29-7.58-22.52-11.31-33.8c-8.42-23.09-15.13-47.28-14.72-72.06 c0.48-11.97,2.15-23.91,5.49-35.42c6.98-24.33,19.83-46.68,35.64-66.32c7.38-9.23,14.92-18.4,23.51-26.55 c7.46-7.19,14.32-15.03,22.39-21.57c5.25-4.78,10.73-9.3,16.01-14.04c14.61-11.61,29.41-23.21,41.66-37.38 c8.79-10.53,16.72-22.26,20.1-35.74c3.9-13.98,2.58-29.08-2.25-42.67c-5.98-17.28-16.71-32.3-26.24-47.73 c-7.74-11.67-15.71-23.2-22.63-35.39c-5.87-8.87-10.08-19.49-8.68-30.3c1.44-9.08,8.32-16.23,15.87-20.9 c26.12-14.68,56.92-16.42,84.33-27.75c7.12-3.14,15.04-8.12,16.47-16.42c1.98-12.51-2.15-24.77-4.45-36.93 c-1.72-10.51-4.08-21.17-2.6-31.85c0.9-18.11,10.38-34.71,23.11-47.2c7.74-6.38,15.27-13.13,24.16-17.91 c4.89-2.49,9.27-5.85,13.22-9.63c4.25-4.12,6.55-10.58,4.9-16.38c-2.88-11.51-9.89-21.25-15.82-31.32 c-10.09-16.19-18.22-33.74-22.77-52.3c-2.06-8.92-3.61-18.29-1.66-27.36c2.61-13.12,10.72-24.83,21.34-32.81 c7.45-6.31,16.29-10.64,24.95-15.03C482.36,181.55,497.6,176.45,513.31,173.34z"/>
13 <path fill="#6D3321" stroke="#6D3321" stroke-width="0.5" d="M913.75,236.3c-0.02-1.69,2.12-0.3,2.88,0.12 c8.01,4.82,14.33,11.96,19.14,19.89c10.4,18.27,14.06,39.49,14.9,60.25c1.93,18.95-0.31,38.09,1.67,57.03 c-0.4,13.81,2.43,27.42,4.04,41.09c3.25,19.43,7.39,39.26,17.93,56.22c5.37,8.07,11.51,15.79,19.49,21.43 c14.19,11.28,31.77,16.66,48.76,22.13c20.94,6.26,42.93,11.19,61.18,23.84c7.55,4.96,13.92,11.43,20.49,17.58 c5.39,6.57,12.09,12.05,16.67,19.28c11.83,15.3,20.37,33.11,25.12,51.86c5.74,24.43,3.85,50.06-2.07,74.26 c-1.48,4.96-2.53,10.04-3.93,15.02c-3.19,8.8-5.99,17.74-9.51,26.43c-5.13,11.2-10.08,22.69-12.22,34.9 c-1.49,6.93-1.24,14.33,1.12,21.05c0.86,2.99,2.87,5.65,2.88,8.88c-5.04-6.8-7.14-15.55-6.9-23.91 c-0.37-11.64,3.63-22.82,7.44-33.64c7.27-17.89,12.59-36.53,16.55-55.42c2.1-11.18,3.5-22.53,3.19-33.92 c0.59-14.8-2.17-29.54-6.64-43.59c-4.01-9.93-7.84-20.09-14.1-28.87c-7.77-12.78-17.77-24.02-28.59-34.29 c-12.98-14.1-30.95-22.22-48.69-28.57c-19.9-6.91-40.48-12.53-59.09-22.64c-16.08-8.57-29.47-22.08-37.71-38.35 c-5.24-8.3-7.6-17.95-10.85-27.12c-4.89-18.22-8.13-36.86-10.3-55.6c-0.09-5.66-0.31-11.32-0.95-16.95 c0.02-10.35-0.24-20.71,0.44-31.03c-0.78-7.02-0.5-14.08-0.68-21.12c-1.13-9.73-1.19-19.63-3.6-29.18 c-2.3-8.85-4.39-17.97-9.28-25.84C928.23,248.97,921.23,242.09,913.75,236.3z"/>
14 <path fill="#62270F" stroke="#62270F" stroke-width="0.5" d="M864.19,247.52c0.55,0.37,1.66,1.11,2.21,1.47 c0.44,5.77,0.28,11.56,0.13,17.33c0.84-0.48,1.69-0.96,2.56-1.44c-1.95,7.75-6.53,14.61-12.17,20.17 c-3.78,3.59-8.16,7.04-13.52,7.62c6.18-2.34,11.13-6.96,14.76-12.4C864.95,271.01,867.65,258.6,864.19,247.52z"/>
15 <path fill="#6D3321" stroke="#6D3321" stroke-width="0.5" d="M1092.59,269.85c1.1-1.39,2.19,0.97,2.81,1.75 c7.9,16.22,18.54,31.07,31.34,43.79c13.15,14.01,29.77,24.75,47.91,31.04c8.87,3.13,16.78,8.29,24.45,13.63 c7.62,6.68,14.85,13.96,20.55,22.39c3.66,6.46,8.12,12.6,10.37,19.75c10.2,25.2,12.01,54.42,1.95,79.96 c-9.64,18.68-23.7,34.55-34.13,52.76c-2.69,5.16-5.52,10.35-6.95,16.04c-1.16,7.56-1.17,16.09,3.81,22.41 c4.06,6.54,10.85,10.45,16.11,15.89c14.87,13.13,28.75,27.65,39.75,44.23c9.93,15.51,16.81,32.88,20.17,51 c2.38,11.89,3.35,24.4-0.12,36.18c-5.75,21.42-19.37,39.34-32.04,57.11c-3.95,5.99-8.97,11.22-12.45,17.53 c-4.39,7.44-9.92,14.44-12.17,22.93c-2.41,7.38-2.78,16.34,2.11,22.83c11.57,16.31,29.77,26.15,47.45,34.58 c17.3,8.68,35.4,15.77,51.93,25.93c8.12,5.28,16.09,11.34,21.59,19.43c1.07,1.29,1.17,2.99,1.36,4.6 c-3.7-6.09-9.09-10.94-14.49-15.47c-7.43-5.19-15.54-9.31-23.61-13.36c-5.55-1.79-10.63-4.62-15.88-7.09 c-8.36-3.3-16.68-6.7-24.87-10.37c-9.8-5.47-20.43-9.48-29.44-16.28c-6.22-4-11.32-9.38-16.32-14.75 c-3.42-4.31-6.89-9.02-7.37-14.69c-2.42-9.74,1.68-19.47,5.9-28.08c4.33-9.83,11.26-18.12,16.98-27.13 c12.74-16.77,25.35-34.06,33.2-53.75c3.88-9.5,4.83-19.91,3.74-30.06c-1.85-12.95-4.58-25.89-9.82-37.94 c-2.87-6.05-5.07-12.45-8.93-17.98c-5.08-8.67-10.97-16.87-17.53-24.48c-2.7-3.62-6.33-6.42-8.91-10.12 c-2.1-2.95-5.69-4.39-7.61-7.49c-2.08-3.23-5.51-5.11-8.21-7.71c-5.36-5.32-11.51-10.21-14.78-17.2 c-3.66-6.82-3.75-15.11-1.37-22.35c1.36-4.19,2.62-8.45,4.72-12.35c5.46-9.08,11.2-18.02,17.47-26.58 c4.24-7.27,9.43-13.93,13.79-21.13c10.32-17.96,11.29-39.7,7.75-59.68c-3.45-18.08-11.12-35.34-22.32-49.93 c-10.87-13.37-25.36-23.72-41.66-29.36c-6.44-2.55-12.67-5.7-18.42-9.55c-7.24-3.77-13.44-9.14-19.29-14.74 c-3.98-2.71-6.36-6.99-9.95-10.1c-10.72-11.45-19.2-24.81-26.05-38.89C1094.13,274.71,1092.14,272.47,1092.59,269.85z"/>
16 <path fill="#522A22" stroke="#522A22" stroke-width="0.5" d="M127.92,329.03c-0.66-8.37,0-16.94,2.89-24.87 c0.73,0.14,2.19,0.44,2.91,0.58C129.85,312.27,128.66,320.71,127.92,329.03z"/>
17 <path fill="#793623" stroke="#793623" stroke-width="0.5" d="M257.74,338.95c2.77-1.35,5.81-2.07,8.89-2.16 c-7.65,3.76-15.87,6.84-22.34,12.6c-2.92,2.77-6.55,4.81-8.87,8.17c-3.87,5.53-8.59,10.64-10.82,17.14 c-4.4,10.03-6.45,21-6.37,31.92c-0.71,30.52,6.83,60.32,11.82,90.22c4.21,23.54,8.16,47.47,5.97,71.46 c-0.96,8.38-3.06,16.66-6.59,24.34c-3.27,6.64-8.14,12.37-13.81,17.08c-16.94,12.81-35.16,23.9-51.32,37.72 c-11.43,10.5-22.7,22.22-27.76,37.25c-4.68,12.74-5.08,26.63-3.15,39.95c0.35,4.07,1.92,7.94,1.95,12.05 c-4.55-10.71-5.01-22.55-5.46-34.01c0.53-15.97,7.12-31.25,16.91-43.7c14.31-17.88,33.54-30.81,51.85-44.24 c5.75-4.56,12.12-8.37,17.12-13.81c4.84-4.24,7.61-10.23,10.03-16.06c3.96-12.7,5.32-26.25,4.1-39.49 c-2.1-37.94-12.61-74.79-15.79-112.6c-1.11-8.01-0.61-16.11-0.74-24.17c-0.21-11.7,2.73-23.23,7.12-34 c4.54-9.18,10.34-18.1,18.67-24.24C244.57,345.43,251.18,342.11,257.74,338.95z"/>
18 <path fill="#D28C37" stroke="#D28C37" stroke-width="0.5" d="M890.24,394.75c-5.75-8.49-6.7-19.42-4.26-29.19 c1.7,11.02,4.11,22.1,9.32,32.07c1.7,3.84,4.49,7.1,5.91,11.07C896.59,404.93,893.58,399.6,890.24,394.75z"/>
19 <path fill="#70280D" stroke="#70280D" stroke-width="0.5" d="M564.43,449.47c6.14-0.65,11.67-3.74,16.07-7.97 c-5.12,7.38-14.57,9.92-23.09,10.29c-12.39,0.33-24.89-2.91-35.56-9.2c3.15,0.39,6.32,2.08,9.52,0.97 C541.69,448.08,553.11,451.07,564.43,449.47z"/>
20 <path fill="#6D3321" stroke="#6D3321" stroke-width="0.5" d="M960.13,458.55c-0.21,2.28-1.68,4.11-2.7,6.07 c-4.42,8.76-7.01,19.17-3.62,28.73c2.01,6.84,7.35,11.89,12.39,16.63c6.8,6.19,15.12,10.23,23.06,14.73 c18.41,9.22,37.84,16.1,56.61,24.52c10.52,4.03,20.47,9.34,30.53,14.37c12.32,6.83,24.24,14.82,33.88,25.19 c6.09,6.83,11.31,14.74,13.46,23.73c3,10.12,1.94,20.95-0.45,31.08c-8.36,35.14-23.3,68.76-26.8,104.99 c-0.11,4.7-0.26,9.41-0.67,14.11c0.6,11.04,1.76,22.29,5.98,32.63c1.68,6.14,4.88,11.67,7.55,17.42 c5.69,9.06,11.5,18.23,19.34,25.62c13.66,14.15,30.03,25.59,47.54,34.45c17.55,9.23,36.06,16.57,55.15,21.95 c19.24,6.79,38.1,14.85,55.72,25.21c18.38,10.21,35.89,22.29,50.62,37.39c4.61,4.14,8.34,9.12,11.78,14.26 c3.86,5.89,7.57,12.86,6.71,20.12c-1.49-4.4-2.16-9.14-4.77-13.07c-5.32-8.7-12.02-16.65-20.14-22.85 c-12.04-10.73-25.74-19.33-39.58-27.49c-10.36-5.37-20.7-10.77-31.33-15.56c-14.6-5.95-29.34-11.7-44.64-15.63 c-17.51-6.25-35.04-12.97-50.94-22.76c-8.38-4.72-16.6-9.88-23.78-16.31c-7.41-5.14-13.64-11.75-19.69-18.39 c-21.32-23.18-32.94-55.55-29.18-87.03c2.43-21.07,8.18-41.58,14.9-61.64c5.33-18.14,11.82-36.02,15.02-54.71 c1.51-10.39,0.23-21.32-4.68-30.68c-2.27-3.67-4.91-7.09-7.41-10.6c-7.59-9.27-17.81-15.86-28.05-21.85 c-6.18-4.22-13.29-6.68-19.81-10.28c-23.21-11.17-47.55-19.86-70.55-31.5c-7.17-4.05-14.74-7.49-21.14-12.76 c-8.84-6.16-17.04-14.36-19.79-25.1c-2.35-7.28-0.78-15.06,1.71-22.07C954.11,466.74,956.45,462.09,960.13,458.55z"/>
21 <path fill="#E4A24F" stroke="#E4A24F" stroke-width="0.5" d="M552.35,508.98c6.35-1.09,12.87-1.07,19.22,0.04 c-2.74,0.3-5.49,0.58-8.23,0.72c-0.68,0.01-2.04,0.01-2.72,0.01C557.85,509.59,555.1,509.29,552.35,508.98z"/>
22 <path fill="#060709" stroke="#060709" stroke-width="0.5" d="M560.62,509.75c0.68,0,2.04,0,2.72-0.01 c23.51,0.14,46.82,8.9,64.63,24.23c16.95,14.46,29,34.65,33.33,56.53l0.3,1.08l0.3,0.95c14.83,0.77,29.71,0.03,44.56,0.22 c1.71-0.05,3.61,0.09,5.06-1.04c6.43-31.49,29.01-59.04,58.54-71.68c22.31-9.79,48.19-11,71.37-3.59 c31.25,9.77,56.77,35.77,66.02,67.16c6.93,23.01,5.39,48.47-4.43,70.42c-12.55,28.54-39.02,50.55-69.48,57.39 c-23.16,5.47-48.23,2.4-69.36-8.55c-15.05-7.74-28.12-19.3-37.56-33.35c-9.84-14.41-15.66-31.46-17.04-48.84 c-15.53,0.02-31.1-0.5-46.6,0.24l-0.03,0.14c-1.74,16-7.03,31.65-15.92,45.1c-11.58,17.81-28.88,31.86-48.76,39.37 c-24.52,9.41-52.71,8.75-76.74-1.86c-24.72-10.74-44.73-31.81-54.11-57.09c-12.41-32.34-6.62-70.9,15-98 C500.86,524.71,530.43,509.92,560.62,509.75 M553.94,524.43c-22.07,1.59-43.25,12.35-57.67,29.1 c-10.54,12.06-17.5,27.18-19.88,43.02c-2.54,16.54-0.1,33.8,6.95,48.97c10.8,23.52,32.87,41.44,58.14,47.09 c22.68,5.36,47.45,0.83,66.77-12.21c18.11-12.07,31.31-31.31,35.84-52.62c5.53-24.91-0.72-52.17-16.95-71.93 C609.9,534.14,581.56,521.96,553.94,524.43 M796.82,529.17c-17.79,2.92-34.57,11.7-47.04,24.73 c-15.74,15.91-24.53,38.34-24.09,60.69c0.19,20.71,8.32,41.18,22.36,56.39c12.83,14.08,30.53,23.68,49.37,26.59 c21.25,3.48,43.74-1.44,61.52-13.61c14.51-9.89,25.97-24.29,32.02-40.8c7.89-21.03,6.99-45.19-2.43-65.57 c-7.5-16.35-20.33-30.16-36.05-38.88C835.72,529.28,815.74,526.09,796.82,529.17z"/>
23 <path fill="#FDD05D" stroke="#FDD05D" stroke-width="0.5" d="M553.94,524.43c27.62-2.47,55.96,9.71,73.2,31.42 c16.23,19.76,22.48,47.02,16.95,71.93c-4.53,21.31-17.73,40.55-35.84,52.62c-19.32,13.04-44.09,17.57-66.77,12.21 c-25.27-5.65-47.34-23.57-58.14-47.09c-7.05-15.17-9.49-32.43-6.95-48.97c2.38-15.84,9.34-30.96,19.88-43.02 C510.69,536.78,531.87,526.02,553.94,524.43z"/>
24 <path fill="#D7B259" stroke="#D7B259" stroke-width="0.5" d="M796.82,529.17c18.92-3.08,38.9,0.11,55.66,9.54 c15.72,8.72,28.55,22.53,36.05,38.88c9.42,20.38,10.32,44.54,2.43,65.57c-6.05,16.51-17.51,30.91-32.02,40.8 c-17.78,12.17-40.27,17.09-61.52,13.61c-18.84-2.91-36.54-12.51-49.37-26.59c-14.04-15.21-22.17-35.68-22.36-56.39 c-0.44-22.35,8.35-44.78,24.09-60.69C762.25,540.87,779.03,532.09,796.82,529.17z"/>
25 <path fill="#935E51" stroke="#935E51" stroke-width="0.5" d="M1205.76,575.78c1.2-0.86,1.98-0.65,2.33,0.65 C1206.84,577.27,1206.07,577.06,1205.76,575.78z"/>
26 <path fill="#210100" stroke="#210100" stroke-width="0.5" d="M661.6,591.58c16.64,0.22,33.29-0.18,49.92,0.13 c-1.45,1.13-3.35,0.99-5.06,1.04c-14.85-0.19-29.73,0.55-44.56-0.22L661.6,591.58z"/>
27 <path fill="#793623" stroke="#793623" stroke-width="0.5" d="M386.47,655.6c3.05,2.37,4.92,5.82,7.05,8.97 c8.47,13.28,17.1,26.71,22.2,41.72c4.95,13.41,7.69,28.32,3.72,42.35c-3.34,10.78-11.17,19.23-18.27,27.7 c-4.23,4.44-8.73,8.62-12.96,13.07c-12.36,11.46-25.92,21.53-39.4,31.62c-8.18,5.72-15.47,12.58-23.5,18.49 c-6.57,6.1-13.72,11.65-19.44,18.6c-9.32,10.37-17.44,21.92-23.47,34.52c-13.61,29.34-23.66,60.68-26.59,93.01 c-0.99,10.01-0.01,20.09-0.73,30.11c-3.64-23.28-1.41-47.13,3.56-70.05c2.72-10.57,5.06-21.32,9.21-31.44 c5.56-16.67,12.57-33.04,22.7-47.48c5.45-7.17,11.46-13.89,17.63-20.43c10.07-9.68,20.79-18.67,32.11-26.86 c7.47-6.26,15.71-11.53,23.17-17.79c8.27-5.63,15.48-12.6,23.2-18.92c8.38-7.69,15.86-16.29,22.66-25.4 c8.82-11.91,8.61-27.96,5.14-41.75c-1.08-6.02-3.74-11.56-5.6-17.35c-4.21-11.7-10.59-22.43-16.91-33.09 C390.12,661.99,387.71,659.1,386.47,655.6z"/>
28 <path fill="#FFFFFF" stroke="#FFFFFF" stroke-width="0.5" d="M105.2,672.45c-3.18,17.55-4.35,35.59-1.59,53.28 c-0.66-0.28-1.98-0.85-2.64-1.13C100.01,707.16,100.24,689.33,105.2,672.45z"/>
29 <path fill="#6E3321" stroke="#6E3321" stroke-width="0.5" d="M1012.52,684.78c2.82-3.02,4.36-7.27,8.09-9.37 c-1.84,4.63-5.14,8.43-7.87,12.54c-11.59,16.76-21.85,34.51-29.72,53.32c-1.98,6.25-4.36,12.38-6.02,18.73 c-2.04,10.06-3.93,20.3-3.51,30.62c0.77,9.21,1.49,18.56,4.56,27.36c6.3,20.37,16.09,39.5,27.58,57.4 c8.03,10.86,16.28,21.66,26.08,31.01c8.07,7.98,17.11,14.91,26.13,21.79c14.72,10.51,30.66,19.17,46.9,27.08 c28.21,12.8,58.17,20.99,87.09,31.94c17.43,6.46,34.28,14.45,50.44,23.64c11.32,7.39,22.61,15.11,31.95,25 c19.87,19.29,34.67,43.37,44.68,69.1c0.89,2.57,2.28,4.97,4.36,6.8l0.64,0.67c-0.6-0.13-1.79-0.37-2.39-0.5 c8.71,24.17,12.92,50.16,10.31,75.81c-2.04,17.06-6.24,34.24-15.24,49.05c-2.18,3.43-3.88,7.31-7.07,9.96 c1.68-4.68,4.91-8.56,6.9-13.08c3.16-7.22,6-14.61,7.72-22.32c4.87-18.13,4.51-37.16,2.34-55.66c-0.85-8.67-3.09-17.11-5.52-25.44 c-2.34-9.93-6.6-19.23-10.32-28.68c-2.38-6.36-6.31-11.95-9.09-18.11c-13.55-24.01-31.94-45.45-54.44-61.48 c-8.77-6.64-18.76-11.36-28.32-16.69c-6.81-3.9-14.24-6.5-21.44-9.54c-12.19-5.45-24.75-10.02-37.27-14.66 c-7.86-2.64-15.27-6.46-23.21-8.86c-11.76-4.64-23.45-9.47-34.65-15.36c-34.17-16.72-66.4-38.65-91.14-67.82 c-6.35-6.53-11.27-14.22-16.29-21.76c-4.11-6.98-8.81-13.66-11.79-21.22c-3.45-7.39-6.48-14.96-9.32-22.6 c-4.08-11.5-5.52-23.72-5.97-35.84c0.74-8.74,1.2-17.6,3.7-26.06c5.24-21.34,15.93-40.84,28.13-58.93 C1003.93,696.71,1007.6,690.28,1012.52,684.78z"/>
30 <path fill="#D68B30" stroke="#D68B30" stroke-width="0.5" d="M912.33,734.57c6.97-14.84,19.87-26.01,34.07-33.73 c-2.97,5.55-6.52,10.78-9.18,16.51c-8.21,16.74-12.97,35.51-11.53,54.23c0.55,4.4-0.95,8.67-1.3,13.02 c-1.14,12.04,0.7,24.23,4.54,35.66c3.7,10.35,9.09,20.01,12.84,30.35c2.57,6.72,4.55,13.93,3.35,21.18 c-0.49-8.53-4.62-17.12-12.69-20.81c2.31,2.87,5.41,5.21,6.69,8.81c4.04,9.31-0.13,20.56-7.82,26.63c-5.13,4.1-12,5.08-18.37,4.63 c3.64-10.05,6.42-20.61,5.8-31.38c-1.2-22.73-11.86-43.52-14.96-65.91C900.94,773.76,903.92,752.95,912.33,734.57z"/>
31 <path fill="#7A3623" stroke="#7A3623" stroke-width="0.5" d="M410.1,808.27c7.83-12.9,12.59-28.48,25.39-37.63 c-7.36,15.5-16.64,30.02-24.94,45.03c-8.76,15.71-18.06,31.42-30.78,44.29c-7.02,8.63-15.42,15.97-23.08,24 c-5.67,5.97-10.94,12.3-16.43,18.43c-13.14,16.52-22.5,35.91-27.9,56.29c-6.36,23.04-8.49,47.11-7.65,70.95 c0.89,6.08,0.35,12.25,1.26,18.32c1.27,10.58,2.01,21.28,4.65,31.64c2.1,11.93,7.4,22.92,11.77,34.13 c4.74,8.55,7.87,17.85,12.37,26.52c3.56,8.32,6.93,16.73,9.89,25.29c4.56,11.22,7.3,23.05,10.19,34.79 c4.73,23.79,5.65,48.88-1.53,72.3c-1.41,4.21-2.71,8.47-4.33,12.63c-1.8,4.63-4.56,8.82-6.47,13.41c-2.4,5.88-6.39,10.9-9.69,16.27 c-3.88,6.31-8.87,11.84-13.21,17.83c-10.01,13.04-19.66,26.51-26.59,41.48c-2.95,8.07-4.94,16.51-8.41,24.39 c-0.19-7.96,2.2-15.74,4.6-23.25c12.24-36.79,40.08-65.94,52.11-102.82c7.5-23.64,6.42-49.2,0.42-73.04 c-5.75-23.48-15.35-45.73-23.92-68.25c-7.56-19.26-13.5-39.22-16.72-59.68c-2.75-19.86-3.02-39.95-2.44-59.97 c1.8-23.78,4.98-47.56,11.25-70.6c3.41-11.48,7.53-22.87,13.81-33.12c5.23-9.69,12.42-18.12,19.48-26.5 c4.39-3.99,7.65-9.01,12.03-13c5.05-4.96,9.94-10.1,15.05-15c7.32-5.6,13.16-12.83,20.08-18.88 C398.6,827.15,404.57,817.74,410.1,808.27z"/>
32 <path fill="#060709" stroke="#060709" stroke-width="0.5" d="M636.54,811.67c20.45,11.64,40.64,23.73,60.92,35.66 c0.74,0.45,1.49,0.92,2.25,1.4c20.72-12.12,41.06-24.89,61.76-37.07c-1.67,1.9-3.4,3.74-5.26,5.44 c-19.5,18.47-37.99,37.98-57.19,56.76c-13.28-13.33-26.64-26.58-39.85-39.98c-5.62-5.72-11.05-11.67-17.15-16.89 C640.05,815.36,638.24,813.56,636.54,811.67z"/>
33 <path fill="#522A22" stroke="#522A22" stroke-width="0.5" d="M37.27,844.51c9.82-3.56,20-6.22,29.4-10.86 c-0.62,1.25-1.25,2.51-1.87,3.78C55.8,840.37,46.55,842.62,37.27,844.51z"/>
34 <path fill="#562924" stroke="#562924" stroke-width="0.5" d="M1317.16,849.36c6.71-3.62,11.87-9.42,16.2-15.58 c-8.21,17.13-28.75,27.46-47.33,22.44c1.4-0.31,2.83-0.62,4.27-0.93c-0.98-0.5-1.94-0.99-2.88-1.46c0.55-0.09,1.63-0.28,2.18-0.37 C1298.9,855.49,1308.89,854.15,1317.16,849.36z"/>
35 <path fill="#793624" stroke="#793624" stroke-width="0.5" d="M655.18,851.66c0.58-5.81,0.2-11.75,1.94-17.39 c0.68,10.44,0.51,20.99-0.93,31.37c-2.15,20.2-7.44,40.41-17.81,58.01c-2.09,4-5.78,7.12-6.91,11.61 c-5.72,4.74-11.55,9.38-17.73,13.53c-0.58-0.1-1.74-0.31-2.32-0.41c5.35-5.58,11.01-10.88,16.15-16.66 c5.25-7.05,9.93-14.6,13.41-22.69C649.52,891.09,652.84,871.24,655.18,851.66z"/>
36 <path fill="#793624" stroke="#793624" stroke-width="0.5" d="M616.56,850.65c2.45-4.19,4.26-8.9,8.01-12.17 c-0.54,3.93-3.4,7-4.59,10.74c-8.01,16.02-13.06,33.29-17.2,50.66c-3.98,15.13-7.22,30.89-15.91,44.19 c-3.37,4.86-6.59,10.03-11.53,13.47c-6.29,5.77-13.84,9.92-21.6,13.37c-3.94,1.29-8.14,1.48-12.25,1.44 c16.32-5.08,32-14.66,41.07-29.53c11.41-17.76,13.93-39.14,20.3-58.87C606.36,872.45,610.68,861.16,616.56,850.65z"/>
37 <path fill="#7A3623" stroke="#7A3623" stroke-width="0.5" d="M414.14,854.42c1.49-1.82,4.51-2.81,6.16-0.61 c3.31,3.08-0.78,7.76-4.18,8.59c-0.12,0.57-0.24,1.16-0.34,1.76c-5.31,5.6-10.56,11.26-16.07,16.68 c-13.62,15.37-26.95,31.42-36.05,49.98c-4.81,9.62-8.71,19.8-10.68,30.41c-2.29,9.59-1.87,19.56-1.44,29.33 c1.92,13.16,4.96,26.31,10.58,38.42c2.79,5.31,4.66,11.06,7.78,16.2c10.66,18.94,23.76,36.33,35.16,54.82 c9.51,14.3,17.48,29.86,21.43,46.68c6.16,24.15,5.25,49.85-1.33,73.83c-8.55,32.31-23.74,62.31-33.88,94.09 c-3.57,10.3-6.55,20.97-6.78,31.95c-0.3,12.49,1.85,24.85,3.9,37.12c2.95,15.99,6.31,32.56,15.81,46.13 c2.45,3.84,5.53,7.21,8.24,10.86c1.72,2.01,0.01,5.08-2.32,5.62c-1.78,0.76-3.37-0.61-4.6-1.7 c-13.38-14.84-24.56-32.27-29.29-51.88c-5.58-22.57-2.54-46.36,3.81-68.44c4.99-19,12.85-37.08,21-54.9 c4.52-8.86,7.86-18.24,11.88-27.32c5.12-12.02,8.77-24.63,11.38-37.41c1.59-7.25,1.45-14.69,1.36-22.05 c-0.15-13.24-3.47-26.21-7.64-38.7c-5.81-18.39-16.15-34.95-27.27-50.57c-9.8-13.53-20.49-26.44-29.55-40.51 c-7.16-10.87-14.01-22.06-18.64-34.27c-4.95-11.67-8.37-24.16-8.23-36.93c-0.43-9.07,0.62-18.2,3.17-26.91 c7.7-25.57,24.02-47.6,42.57-66.38C390.39,876.03,402.99,865.93,414.14,854.42z"/>
38 <path fill="#522A22" stroke="#522A22" stroke-width="0.5" d="M1285.86,859.01c3.3,6.39,7.94,12.28,14.25,15.93 c8.44,5.27,18.93,5.73,28.52,4.16c-6.55,1.93-13.59,1.86-20.24,0.57c-10.29-2.13-18.95-9.4-24.02-18.44 C1284.74,860.67,1285.49,859.56,1285.86,859.01z"/>
39 <path fill="#793623" stroke="#793623" stroke-width="0.5" d="M570.18,886.29c4.67-6.57,8.6-14.01,15.42-18.66 c-4.53,8.66-11.06,16.21-14.7,25.38c-4.26,10.15-8.48,20.31-12.6,30.51c-3.77,8.66-8.17,17.31-14.99,24.01 c-5.68,6.55-13.62,10.64-21.77,13.25c-9.14,2.4-18.77,3.85-28.1,1.62c-5.21-0.58-9.53-3.91-14.65-4.75 c-3.54-2.63-6.43-5.97-9.37-9.21c3.99,2.03,7.37,5.15,11.63,6.65c11.63,4.62,24.93,4.89,36.76,0.83 c10.06-2.82,19.39-8.95,25.27-17.68c3.97-5.33,7.29-11.14,9.93-17.23C558.31,909.24,563.45,897.33,570.18,886.29z"/>
40 <path fill="#D68B30" stroke="#D68B30" stroke-width="0.5" d="M700.79,876.08c5.55,6.49,11.88,12.26,18.15,18.05 c15.6,14.16,31.91,27.52,48.31,40.76c12.52,10.21,25.83,19.72,40.65,26.33c19.18,8.79,40.53,12.36,61.55,11.9 c17.85-0.31,35.99-5.5,49.95-16.95c5.68,6.57,12.4,12.13,19.77,16.7c-10.32,7.08-21.07,13.61-30.66,21.69 c-6.31,5.32-13.46,9.55-20.78,13.31c-16.09,8.09-33.1,14.19-50.33,19.37c-19.89,5.69-40.19,10.61-60.9,11.92 c-6.31,0.1-13.27,0.72-18.9-2.69c-2.69-1.53-2.18-5.21-0.59-7.35c3.36-4.91,7.33-9.39,10.41-14.5c4.27-6.91,8.42-14.64,7.93-23.02 c-0.33-5.84-4-10.96-8.74-14.15c-7.8-5.43-17.13-7.98-26.24-10.17c-12.52-2.92-25.28-4.52-38.03-5.94 c-1.37-0.17-2.71-0.32-4.05-0.45c0.78-0.12,2.33-0.35,3.1-0.47c0.23-14.6-0.28-29.2-0.25-43.79 C701.32,903.11,699.28,889.56,700.79,876.08z"/>
41 <path fill="#6F2A08" stroke="#6F2A08" stroke-width="0.5" d="M481.02,890.36c-7.18-1.8-14.44-5.24-18.68-11.56 c3.01,2.8,6.17,5.58,10.08,7.07c11.62,4.74,24.53,4.72,36.85,3.69c1.77,0.18,3.54,0.46,5.32,0.75c-2,0.29-3.99,0.57-5.97,0.86 c1.39,0.44,2.77,0.9,4.18,1.33C502.18,892.75,491.37,893.23,481.02,890.36z"/>
42 <path fill="#D68B30" stroke="#D68B30" stroke-width="0.5" d="M1040.83,584.28c-3.53-7.26-10.64-11.8-17.64-15.26 c-14.34-6.88-30.1-10.08-44.63-16.52c-13.75-6.21-25.96-16.52-33.1-29.94c-5.61-10.7-8.14-22.85-8.19-34.88 c0.53-6.9,3.09-13.46,3.87-20.34c1.22-8.81,1.87-18.86-3.64-26.46c0.49,10.08-0.22,20.33-3.82,29.84 c-3.04,9.82-9.14,18.61-10.41,28.96c-0.86,5.73,0.45,11.73,3.58,16.6c6.43,10.31,16.72,17.71,22.23,28.66 c3.11,5.83,4.33,13.01,1.85,19.29c-1.63,3.9-3.75,7.78-7.2,10.37c3.37-6.4,8.03-13.35,5.63-20.94 c-5.22-17.15-24.37-24.6-31.09-40.86c-3.68-9.39-2.18-19.97,1.2-29.22c3.99-10.84,8.14-22.11,7.4-33.86 c-0.66-8.03-2.86-16.24-7.7-22.78c-3.7-3.65-7.53-7.22-11.66-10.38c2.77,5.74,7.25,10.52,9.39,16.6 c2.85,6.82,2.98,14.83-0.26,21.54c-4.81,10.34-15.05,16.78-20.25,26.85c-2.21,4.12-2.03,8.89-2.47,13.41 c-1.27-5.67-0.87-11.79,2-16.93c4.72-9.65,13.87-16.72,16.86-27.28c1.87-6.36-0.46-13.07-4.03-18.37 c-10.12-15.03-26.55-25.37-33.75-42.43c-7.41-19.11-1.77-40.88,9.55-57.24c2.96-3.54,3.15-8.27,4.37-12.51 c2.14-7.83,5.88-15.12,10.28-21.9c4.26-6.9,8.18-14.38,9.03-22.57c1.14-14.4-4.92-29.53-16.67-38.22 c-10.05-7.61-23.31-8.47-33.92-15.04c-10.11-5.63-17.77-14.7-23.42-24.64c-3.97-7.51-10.91-13.11-18.64-16.4 c-3.14,3.36-6.93,6.05-10.03,9.43c-0.71,5.1-1.02,10.45,0.19,15.5c1.43,4.75,6.5,6.68,10.8,7.99c12.88,3.63,26.3,6.36,37.93,13.29 c6.29,3.89,12.08,9.34,14.51,16.5c2.4,6.67,1.93,14,0.11,20.74c-1.95,7.75-6.53,14.61-12.17,20.17c-3.78,3.59-8.16,7.04-13.52,7.62 c6.18-2.34,11.13-6.96,14.76-12.4c6.79-9.26,9.49-21.67,6.03-32.75c-3.56-7.57-10.86-12.38-18.55-15.05 c-10.98-4.02-22.73-4.92-34.1-7.32c-6.88-1.49-13.78-5.13-17.27-11.48c-2.41-3.99-3.06-8.66-3.75-13.18 c-22.55,11.71-47.79,17.53-73.08,18.7c-9.02,1.52-18.03,3.11-27.18,3.59c-0.78,0.83-2.32,1.36-2.07,2.76 c-0.25,6.7,0.25,13.4,0.16,20.11c-0.18,6.34,0.92,12.64,0.75,18.98c0.05,27.68,0.73,55.36,0.76,83.05 c1.25,16.93,0.64,33.94,1.08,50.9c0.88,13.01,0.26,26.07,1.19,39.07c-0.07,20.34,1.16,40.63,1.1,60.96 c0.04,30.63,1.54,61.25,1.18,91.87c-11.04,0.39-22.08,0.19-33.11,0.02l0.3,1.08c16.64,0.22,33.29-0.18,49.92,0.13 c6.43-31.49,29.01-59.04,58.54-71.68c22.31-9.79,48.19-11,71.37-3.59c31.25,9.77,56.77,35.77,66.02,67.16 c6.93,23.01,5.39,48.47-4.43,70.42c-12.55,28.54-39.02,50.55-69.48,57.39c-23.16,5.47-48.23,2.4-69.36-8.55 c-15.05-7.74-28.12-19.3-37.56-33.35c-9.84-14.41-15.66-31.46-17.04-48.84c-15.53,0.02-31.1-0.5-46.6,0.24 c10.74,1.08,21.57-0.3,32.33,0.61c-0.03,11.36,1.01,22.68,0.82,34.05c0.05,9.67,0.2,19.35,0.4,29.03 c0.9,9.31,0.44,18.67,0.63,28.02c0.34,22.34,0.65,44.69,0.71,67.04c1.25,16.62,0.62,33.3,1.09,49.95 c0.17,4.68,0.84,9.36,0.54,14.06c0.1,1.57-0.71,2.86-2.04,3.66c0.74,0.45,1.49,0.92,2.25,1.4c20.72-12.12,41.06-24.89,61.76-37.07 c-1.67,1.9-3.4,3.74-5.26,5.44c11.7,11.57,24.26,22.24,36.77,32.91c15.96,13.15,33.49,24.69,52.78,32.35 c11.39,4.17,23.54,7.58,35.78,6.26c4.83-0.44,9.09-2.9,13.3-5.1c-3.72,4.75-9.72,6.73-15.45,7.73c9.09,2.16,18.57,2.2,27.85,1.48 c3.81-11.58,5.68-24.11,3.03-36.15c-3.89-17.33-12.58-33.03-17.99-49.85c-7.81-22.99-8.53-48.29-2.37-71.75 c3.74-15.41,11.91-29.59,22.87-40.99c14.47-15.06,32.9-25.53,51.79-34.05c4.81-1.95,9.59-3.99,14.35-6.08 c9.69-3.77,20.07-6.14,28.84-11.94c6.96-4.13,13.83-8.56,19.67-14.22c6.17-6,10.34-13.76,13.31-21.77 C1043.26,599.05,1044.19,591.03,1040.83,584.28z M897.11,880.71c0.289,1.199-0.073,1.762-1.093,1.69 C897.037,882.472,897.398,881.909,897.11,880.71c-0.175-0.039-0.336-0.064-0.484-0.076 C896.773,880.646,896.935,880.671,897.11,880.71z M895.509,881.125c-0.076,0.188-0.097,0.429-0.063,0.724 C895.412,881.554,895.433,881.313,895.509,881.125z"/>
43 <path fill="#F99E2B" stroke="#F99E2B" stroke-width="0.5" d="M701.14,916.63c0.18-13.52-1.86-27.07-0.35-40.55 c-0.38-0.48-1.14-1.45-1.52-1.93c-10.53,12.56-22.94,23.34-35.24,34.1c-10.64,9.26-21.54,18.21-32.56,27.01 c-5.72,4.74-11.55,9.38-17.73,13.53c-15.99,11.1-34.04,19.53-53.29,22.98c-16.75,3.03-34.19,4.01-50.94,0.44 c-11.16-2.45-21.92-7.21-30.72-14.56c-3.54-2.63-6.43-5.97-9.37-9.21c-12.64-13.02-22.64-28.33-31.69-43.98 c-4.2-7.12-7.81-14.57-12.3-21.49c-1.45,4.12-3.01,8.3-3.42,12.69c0.44,5.21,1.91,10.29,3.33,15.31 c3.15,16.77,7.85,33.25,13.39,49.38c4.32,11.52,8.94,23.38,17.43,32.53c8.27,8.53,18.68,14.65,29.41,19.58 c18.06,8.13,37.36,13.18,56.78,16.84c26.58,4.83,53.71,7.2,80.73,5.69c6.7-0.74,13.76-0.74,19.97-3.7 c5.08-2.43,7.07-8.39,6.9-13.68c-0.29-11.81-4.6-23.12-4.71-34.95c-0.06-5.63,1.36-11.68,5.52-15.73 c4.66-4.6,11.34-6.25,17.66-6.98c9.95-1.33,19.96,0.03,29.87,0.94c0.78-0.12,2.33-0.35,3.1-0.47 C701.62,945.82,701.11,931.22,701.14,916.63z"/>
44 <g>
45 <path fill="#F99E2B" stroke="#F99E2B" stroke-width="0.5" d="M698.96,829.61c-0.47-16.65,0.16-33.33-1.09-49.95 c-0.06-22.35-0.37-44.7-0.71-67.04c-0.19-9.35,0.27-18.71-0.63-28.02c-0.2-9.68-0.35-19.36-0.4-29.03 c0.19-11.37-0.85-22.69-0.82-34.05c-10.76-0.91-21.59,0.47-32.33-0.61l-0.03,0.14c-1.74,16-7.03,31.65-15.92,45.1 c-11.58,17.81-28.88,31.86-48.76,39.37c-24.52,9.41-52.71,8.75-76.74-1.86c-24.72-10.74-44.73-31.81-54.11-57.09 c-12.41-32.34-6.62-70.9,15-98c18.44-23.86,48.01-38.65,78.2-38.82c-2.77-0.16-5.52-0.46-8.27-0.77 c6.35-1.09,12.87-1.07,19.22,0.04c-2.74,0.3-5.49,0.58-8.23,0.72c23.51,0.14,46.82,8.9,64.63,24.23 c16.95,14.46,29,34.65,33.33,56.53c11.03,0.17,22.07,0.37,33.11-0.02c0.36-30.62-1.14-61.24-1.18-91.87 c0.06-20.33-1.17-40.62-1.1-60.96c-0.93-13-0.31-26.06-1.19-39.07c-0.44-16.96,0.17-33.97-1.08-50.9 c-0.03-27.69-0.71-55.37-0.76-83.05c0.17-6.34-0.93-12.64-0.75-18.98c0.09-6.71-0.41-13.41-0.16-20.11 c-0.25-1.4,1.29-1.93,2.07-2.76c-0.44,0.03-1.31,0.1-1.75,0.13c-22.61,1.1-45.54-1.19-67.17-8.04 c-21.13-6.54-41.4-17.77-55.52-35.12c-4.4,3.27-9.09,6.5-11.96,11.3c-3.64,5.91-7.12,12-11.97,17.02 c-6.83,7.44-15.75,12.68-25.24,15.98c-5.46,12.08-5.65,26.43-0.18,38.54c7.3,16.25,20.13,29.23,27.61,45.38 c5.96,12.17,7.52,26.57,3.3,39.54c-3.31,11.04-10.58,20.36-18.72,28.31c-7.27,7.44-15.86,14.11-20.37,23.74 c-3.8,8.11-3.31,18.1,1.43,25.72c5.01,8.26,13.22,13.93,21.65,18.28c10.32,4.52,21.74,7.51,33.06,5.91 c6.14-0.65,11.67-3.74,16.07-7.97c-5.12,7.38-14.57,9.92-23.09,10.29c-12.39,0.33-24.89-2.91-35.56-9.2 c-9.58-5.14-18.08-13.45-21.11-24.13c-2.12-8.51-1.32-17.87,2.92-25.62c7.64-14.42,22.07-23.78,29.59-38.28 c5.52-10.34,6.85-23.07,2.44-34.06c-5.38-13.89-16.08-24.64-24.57-36.6c-6.46-8.87-12.2-18.6-14.44-29.46 c-1.8-6.93-1.56-14.13-1.37-21.21c-10.95,7.8-17.21,21.12-17.39,34.44c-0.4,9.61,4.14,18.49,8.95,26.5 c3.78,5.84,7.13,12,9.37,18.6c3.89,11.17,4.65,23.13,4.51,34.86c0.2,17.11-3.03,34.63-11.58,49.62 c-7.92,14.26-20.32,25.63-34.25,33.91c-4.01,2.27-7.12,5.96-8.67,10.3c-3.07,8.32-2,17.4-0.47,25.93 c1.19,7.01,3.92,13.89,3.09,21.12c-0.9,17.38-7.67,34.87-20.81,46.65c-12.22,11.91-28.8,17.24-44.71,22.22 c-11.1,3.85-22.8,7.43-31.86,15.25c-5.74,4.83-8.99,12.43-8.16,19.93c0.93,8.6,4.79,16.6,9.35,23.84 c7.65,11.58,20.23,18.29,31.85,25.2c7.65,4.52,15.24,9.32,21.82,15.33c6.13,7.2,13.03,13.71,19.01,21.05 c17.59,20.97,32.2,45.88,34.97,73.58c3.08,28.04-7.33,55.87-23.21,78.59c-4.11,5.52-5.33,12.48-6.28,19.13 c3.97-2.47,8.02-5.37,12.94-5.2c-2.47,1.57-5.18,2.7-7.63,4.29c-5.76,4.21-8.61,12.16-6.35,19.03 c2.34,8.68,9.99,14.61,17.95,17.96c10.43,4.35,21.56,7.04,32.83,7.98c0.15-1,0.3-2,0.44-2.98c-7.18-1.8-14.44-5.24-18.68-11.56 c3.01,2.8,6.17,5.58,10.08,7.07c11.62,4.74,24.53,4.72,36.85,3.69c24.16-2.19,47.61-9.62,69.61-19.62 c15.44-9.36,29.16-21.23,42.63-33.18c7.07-6.34,14.49-12.37,20.51-19.77c-1.97-1.63-3.78-3.43-5.48-5.32 c20.45,11.64,40.64,23.73,60.92,35.66c1.33-0.8,2.14-2.09,2.04-3.66C699.8,838.97,699.13,834.29,698.96,829.61z"/>
46 <path fill="#F99E2B" stroke="#F99E2B" stroke-width="0.5" d="M516.49,893.17c-1.24-0.23-2.48-0.47-3.69-0.67 c-10.62,0.25-21.43,0.73-31.78-2.14c-0.14,0.98-0.29,1.98-0.44,2.98C492.51,894.73,504.6,895.25,516.49,893.17z"/>
47 </g>
48 <path fill="#D68B30" stroke="#D68B30" stroke-width="0.5" d="M975.93,929.09c-4.91-8.78-7.57-18.51-11.48-27.7 c-0.08-1.36-0.19-2.72-0.32-4.05c-2.41,1.68-3.39,4.57-4.89,6.98c-8.57,15.24-18.69,29.62-30.44,42.57 c1.97,4.39,5.67,7.92,9.14,11.23c3.62,3.02,7.18,6.35,11.53,8.3c5.18-2.69,10-6.05,15.08-8.93c3.14-1.81,6.26-3.64,9.35-5.53 c0.91-4.79,1.48-9.63,2.23-14.43C976.5,934.72,977.79,931.65,975.93,929.09z"/>
49 <path fill="#522A22" stroke="#522A22" stroke-width="0.5" d="M1381.01,988.02c1.4,5.87,3.13,12.07,7.46,16.51 c3.6,3.66,9.46,4.73,14.09,2.36c5.17-2.19,8.36-6.94,11.48-11.35c-2.3,4.58-5.42,9-10.01,11.52c-4.7,2.96-11.2,2.81-15.56-0.7 c-5.04-4.01-7.38-10.35-9.02-16.37C1379.84,989.5,1380.62,988.52,1381.01,988.02z"/>
50 <path fill="#6D3322" stroke="#6D3322" stroke-width="0.5" d="M939.15,1012.58c0.46-4.46,0.22-9.08,2.04-13.27 c1.23,15.11-1.44,30.21-0.48,45.33c0.57,8.34,0.55,16.74,1.85,25.04c1.97,20.8,9.23,41.28,21.69,58.12 c5.28,7.64,11.46,14.59,17.05,22c11.41,14.46,23.18,29.34,28.82,47.16c6.03,18.03,4.02,37.8-1.7,55.65 c-6.36,17.71-16.09,33.98-26.39,49.65c-1.68,2.84-4.81,5.45-4.15,9.08c-7.69,10.67-14.51,22.21-17.83,35.05 c-3.14,3.29-3.59,8.02-4.71,12.22c-2.38,9.2-2.15,18.78-3.3,28.16c-1.06-4.65-0.78-9.43-0.69-14.14 c0.21-18.63,7.22-36.37,15.47-52.81c5.48-9.44,10.56-19.12,16.55-28.25c3.68-6.38,7.71-12.57,10.76-19.3 c10.81-20.19,17.11-43.8,12.51-66.65c-2.08-9.47-5.26-18.8-10.02-27.28c-9.13-17.12-22.26-31.53-34.4-46.5 c-5.86-7.42-11.73-15.02-15.26-23.86c-3-7.64-6.04-15.34-7.28-23.49C934.74,1060.8,936.65,1036.43,939.15,1012.58z"/>
51 <path fill="#6E3321" stroke="#6E3321" stroke-width="0.5" d="M904.83,1012.33c2.97,19.18-3.18,38.21-7.95,56.63 c-5.84,20.79-12.86,41.8-12.35,63.67c0.19,21.67,4.36,43.07,9.9,63.96c2.82,12.44,7.51,24.33,11.56,36.4 c4.12,9.82,7.28,20.01,11.09,29.95c5.76,19.14,10.55,39.66,6.09,59.58c-4.52,19.53-19.1,34.32-32.96,47.86 c-6.46,5.83-11.62,13.2-14.37,21.49c-3.71,10.17-2.8,21.28-1.37,31.8c3.48,19.23,9.98,38.22,8.94,58 c-0.98,11.88-4.6,24.08-12.89,32.97c-10.23,10.93-24.31,17.23-38.36,21.66c-8.92,3.76-18.46,5.84-27.31,9.78 c-5.06,2.18-10.21,4.2-15.02,6.91c-2.01,1.09-3.95,2.56-6.34,2.54c16.8-12.39,37.52-17.29,56.44-25.43 c8.58-3.53,16.83-7.98,23.79-14.17c5.28-5.41,10.05-11.63,12.15-19c3.36-8.02,2.7-16.83,2.7-25.31 c-1.57-22.61-12.12-44.09-10.22-67.04c-0.07-10.51,5.04-20.01,10.6-28.58c8.35-9.94,19.12-17.63,27.02-27.99 c6.72-7.37,11.45-16.58,13.57-26.34c2.08-7.91,1.51-16.07,0.86-24.11c-2.89-27.05-16.57-51.07-25.66-76.26 c-3.58-8.09-6.06-16.6-8.78-24.99c-3.81-14.05-7.61-28.15-9.29-42.64c-1.76-10.27-1.29-20.7-1.16-31.06 c1-21.28,8.54-41.43,15.55-61.3c2.69-6.82,4.61-13.9,7.17-20.76c1.6-8.05,4.59-15.81,5.26-24.03 C903.56,1015.02,904.03,1013.59,904.83,1012.33z"/>
52 <path fill="#4F2D26" stroke="#4F2D26" stroke-width="0.5" d="M1414.64,1025.41c8.24,6.32,14.02,15.29,18.6,24.48 c5.07,10.49,8.51,22.28,7.07,34.02c-0.91-0.9-1.8-1.78-2.67-2.65c0.67-5.58,0.1-11.23-1.1-16.68 C1433.05,1049.86,1425.62,1035.91,1414.64,1025.41z"/>
53 <path fill="#7A3622" stroke="#7A3622" stroke-width="0.5" d="M471.1,1044.71c-0.27-5.77-1.98-11.47-1.24-17.26 c6.52,20.3,7.29,42.19,16.03,61.83c3.74,9.5,9.85,17.81,16.09,25.81c6.73,7.93,14.52,14.88,21.76,22.34 c5.7,5.97,12.23,11.08,17.87,17.11c5.3,5.68,10.89,11.12,15.61,17.31c12.52,14.61,21.64,31.95,27.82,50.13 c3.26,10.18,5,20.87,4.52,31.59c0.93,31.29-9.69,62.26-27.43,87.82c-20.94,30.33-51.71,53.06-68.78,86.19 c-7.82,14.14-12.68,29.91-13.79,46.05c-0.81,20.02,5.88,40.01,17.91,55.96c2.12,3.14,5.17,5.85,5.9,9.74 c-3.94-2.51-7.91-4.96-11.91-7.35c-0.97-0.62-1.9-1.25-2.85-1.83c-1.8-5.11-5.95-8.96-7.71-14.11c-7.91-15.68-9.85-33.72-7.97-51 c2.64-17.58,9.38-34.3,18.46-49.49c8.88-14.14,19.14-27.35,30.38-39.69c14.06-16.1,29.06-31.88,38.72-51.17 c14.88-26.53,20.79-57.94,16.91-88.09c-1.02-12.2-3.45-24.41-8.29-35.7c-10.49-23.28-29.9-40.62-48.39-57.52 c-5.18-5.52-11.46-9.86-16.45-15.57c-6.35-7.38-13.14-14.51-17.9-23.08C475.28,1086.79,472.82,1065.29,471.1,1044.71z"/>
54 <path fill="#7A3622" stroke="#7A3622" stroke-width="0.5" d="M697.31,1091.5c1.97-2.65,4.54-4.74,7.33-6.47 c0.03,3.04,0.07,6.1-0.09,9.16c-6.44,6.77-11.49,14.87-14.92,23.56c-6.47,19.2-4.49,40.2,1.62,59.23 c3.74,11.2,9.07,21.82,15.11,31.96l0.22,0.56c0.11,2.87-0.17,5.75-0.66,8.59c-6.75-9.51-13.34-19.2-18.13-29.87 c-6.92-16.5-11.31-34.59-9.44-52.55C679.07,1119.29,686.49,1103.63,697.31,1091.5z"/>
55 <path fill="#6A2819" stroke="#6A2819" stroke-width="0.5" d="M689.63,1117.75c3.43-8.69,8.48-16.79,14.92-23.56 c-0.23,18.15-0.19,36.31,0.07,54.46c1.99,12.61-0.26,25.44,1.57,38.07c0.57,7.39,0.14,14.81,0.17,22.22 c-6.04-10.14-11.37-20.76-15.11-31.96C685.14,1157.95,683.16,1136.95,689.63,1117.75z"/>
56 <path fill="#6D3322" stroke="#6D3322" stroke-width="0.5" d="M706.58,1209.5c9.51,13.93,19.86,27.3,31.15,39.85 c6.06,5.95,11.09,12.85,17.5,18.48c12.17,13,23.97,26.53,33.16,41.87c11.19,18.08,18.83,39.05,18.34,60.54 c0.82,19.24-6.58,38.78-20.48,52.19c-3.24,4.06-6.95,7.69-11.2,10.69c-12.52,10.89-26.9,19.25-40.58,28.54 c-7.52,5.69-16.02,10.22-22.63,17.04c-0.25-1.27-0.5-2.51-0.76-3.72c-0.37-0.12-1.1-0.35-1.47-0.46c0.88-0.78,1.76-1.54,2.66-2.28 c7.59-6.49,15.88-12.07,24-17.85c7.88-4.63,14.95-10.47,22.69-15.3c13.46-9.95,27.12-20.86,34.79-36.11 c5.5-10.17,7.49-21.88,7.03-33.34c0.19-15.39-3.04-30.83-9.52-44.78c-3.98-10.04-10.07-19.02-16.13-27.87 c-8.86-12.9-19.85-24.1-30.8-35.21c-6.58-7.76-14.36-14.42-20.76-22.35c-5.95-6.08-11.17-12.81-16.44-19.48 c-0.43-0.64-0.82-1.27-1.21-1.86C706.41,1215.25,706.69,1212.37,706.58,1209.5z"/>
57 <path fill="#60261A" stroke="#60261A" stroke-width="0.5" d="M706.47,1235.64c0.05-5.24-0.56-10.54,0.66-15.69 c5.27,6.67,10.49,13.4,16.44,19.48c6.4,7.93,14.18,14.59,20.76,22.35c10.95,11.11,21.94,22.31,30.8,35.21 c6.06,8.85,12.15,17.83,16.13,27.87c6.48,13.95,9.71,29.39,9.52,44.78c0.46,11.46-1.53,23.17-7.03,33.34 c-7.67,15.25-21.33,26.16-34.79,36.11c-7.74,4.83-14.81,10.67-22.69,15.3c-8.12,5.78-16.41,11.36-24,17.85 c-3.63-3.16-1.54-8.55-1.83-12.69c-0.14-12.64,0.69-25.35-0.9-37.92c-0.17-10.68,0.06-21.35-0.1-32.02 c-0.2-10.98,0.67-22.01-0.86-32.92c-0.33-14,0.04-28.02-0.13-42.02c-2.33-18.24,0.37-36.74-1.96-54.98 C706.31,1251.67,706.54,1243.65,706.47,1235.64z"/>
58 <path fill="#522A22" stroke="#522A22" stroke-width="0.5" d="M1016.33,1401.72c8.39,4.37,17.89,5.55,27.18,6.42 c-9.27,0.68-18.75,0.09-27.58-2.97C1016.03,1404.3,1016.23,1402.58,1016.33,1401.72z"/>
59 <path fill="#793624" stroke="#793624" stroke-width="0.5" d="M709.61,1474.52c0.37,0.11,1.1,0.34,1.47,0.46 c0.26,1.21,0.51,2.45,0.76,3.72l-0.53,0.57c-7.65,6.91-15.05,14.65-18.72,24.47c-1.77,5.32-3.34,10.92-2.75,16.59 c0.66,9.36,4.06,18.28,8.25,26.6c5.65,12.43,11.91,24.68,15.29,37.99c0.1,0.36,0.28,1.07,0.38,1.43c-0.24,1.43-0.48,2.93-0.75,4.4 c-2.37-12.48-8.38-23.73-13.58-35.17c-5.25-10.89-12.06-21.56-12.86-33.95c-1.22-11.28,2.63-22.65,9.18-31.76 C699.91,1484.37,704.12,1478.78,709.61,1474.52z"/>
60 <path fill="#6A281A" stroke="#6A281A" stroke-width="0.5" d="M692.59,1503.74c3.67-9.82,11.07-17.56,18.72-24.47 c0.31,9.45,0.04,18.91,0.17,28.37c2.11,19.54,0.15,39.26,1.25,58.86c0.88,6.1,0.84,12.26,0.65,18.42 c-3.38-13.31-9.64-25.56-15.29-37.99c-4.19-8.32-7.59-17.24-8.25-26.6C689.25,1514.66,690.82,1509.06,692.59,1503.74z"/>
61 <path fill="#FFFFFF" stroke="#FFFFFF" stroke-width="0.5" d="M884.45,1521.72c4.65-5.05,9.29-10.11,14.03-15.07 C894.88,1512.51,890.15,1517.83,884.45,1521.72z"/>
62 <path fill="#562924" stroke="#562924" stroke-width="0.5" d="M385.64,1511.46c6.81,6.64,13.28,14.13,16.39,23.28 c1.76,4.84,1.3,10.1,0.98,15.15c-0.41-4.63-0.14-9.42-1.89-13.8c-3.29-8.56-9.89-15.3-16.67-21.23c0.36-0.13,1.08-0.39,1.44-0.52 C385.81,1513.36,385.73,1512.4,385.64,1511.46z"/>
63 <path fill="#D7CECC" stroke="#D7CECC" stroke-width="0.5" d="M491.46,1531.98c4,2.39,7.97,4.84,11.91,7.35 c13.1,9.06,26.17,18.35,37.58,29.53c2.68,2.93,5.27,5.95,7.89,8.97c-3.42-1.21-6.5-3.11-9.68-4.79l0.23,1.5 c-12.35-12.29-27.06-21.8-40.78-32.42C496.3,1538.67,492.84,1535.99,491.46,1531.98z"/>
64 <path fill="#793623" stroke="#793623" stroke-width="0.5" d="M540.95,1568.86c2.43,0.29,4.82,1.02,6.81,2.51 c3.81,2.74,8.19,4.47,12.28,6.73c10.36,6.01,21.52,10.43,32.1,16.03c16.87,8.94,33.94,18.65,46.68,33.17 c10.13,11.28,16.73,25.62,18.41,40.7c-2.06-1.49-2.13-4.17-2.78-6.38c-2.76-11.64-8.44-22.61-16.75-31.25 c-13.82-15.11-32.16-25.09-50.58-33.46c-8.36-4.52-17.34-7.73-25.67-12.28c-3.11-1.69-6.28-3.43-9.85-3.87 c-0.92-1-1.86-1.96-2.76-2.93C546.22,1574.81,543.63,1571.79,540.95,1568.86z"/>
65 <path fill="#522A22" stroke="#522A22" stroke-width="0.5" d="M724.66,1604.37c0.47,0.66,0.97,1.34,1.49,2.02 c0.42-0.48,1.26-1.46,1.68-1.95c-2.25,8.54-1.89,18.2,3.1,25.74c4.31,6.87,12.49,11.02,20.58,10.47 c6.87-0.13,13.01-3.55,18.78-6.93c-5.87,4.77-13.18,7.99-20.82,8.16c-8.07,0.09-16.05-4.07-20.51-10.82 C723.66,1623.34,722.7,1613.35,724.66,1604.37z"/>
66 <path fill="#5F2E22" stroke="#5F2E22" stroke-width="0.5" d="M456.21,1662.79c-7.58-11.27-12.35-26.25-6.5-39.31 c0.73,1.25,1.47,2.52,2.21,3.82C446.65,1638.98,451.14,1651.9,456.21,1662.79z"/>
67 <path fill="#5D2C20" stroke="#5D2C20" stroke-width="0.5" d="M597.23,1642.07c1.07,7.63-0.31,15.87-5.56,21.77 c-0.33-0.47-0.99-1.42-1.32-1.89c3.89-5.43,4.71-12.31,3.72-18.77c0.64,1.06,1.3,2.13,1.99,3.22 C596.46,1644.95,596.84,1643.46,597.23,1642.07z"/>
68 <path fill="#622B21" stroke="#622B21" stroke-width="0.5" d="M666.66,1741.91c0.65-2.08,2.52-0.57,3.78-0.37 c7.26,3.06,15.48,1.94,22.71-0.6c-0.32,0.57-0.97,1.71-1.29,2.28c1.33,0.37,2.65,0.72,4.02,1.16 C686.46,1747.23,674.87,1748.26,666.66,1741.91z"/>
69 </g>
70 </svg>
+0
-62
docs/_static/js/coppybutton.js less more
0 $(document).ready(function() {
1 /* Add a [>>>] button on the top-right corner of code samples to hide
2 * the >>> and ... prompts and the output and thus make the code
3 * copyable. */
4 var hig = $('.highlight-default')
5 var div = hig.find('.highlight')
6 var pre = div.find('pre');
7
8 // get the styles from the current theme
9 pre.parent().parent().css('position', 'relative');
10 var hide_text = 'Hide the prompts and output';
11 var show_text = 'Show the prompts and output';
12 var border_width = hig.css('border-top-width');
13 var border_style = hig.css('border-top-style');
14 var border_color = hig.css('border-top-color');
15 var button_styles = {
16 'cursor':'pointer', 'position': 'absolute', 'top': '0', 'right': '0',
17 'border-color': border_color, 'border-style': border_style,
18 'border-width': border_width, 'color': border_color, 'text-size': '75%',
19 'font-family': 'monospace', 'padding-left': '0.2em', 'padding-right': '0.2em',
20 'border-radius': '0', 'border-width': '0px 0px 1px 1px',
21 'line-height': '14px', 'font-size': '12px'
22 }
23
24 // create and add the button to all the code blocks that contain >>>
25 div.each(function(index) {
26 var jthis = $(this);
27 if (jthis.find('.gp').length > 0) {
28 var button = $('<span class="copybutton">&gt;&gt;&gt;</span>');
29 button.css(button_styles)
30 button.attr('title', hide_text);
31 button.data('hidden', 'false');
32 jthis.prepend(button);
33 }
34 // tracebacks (.gt) contain bare text elements that need to be
35 // wrapped in a span to work with .nextUntil() (see later)
36 jthis.find('pre:has(.gt)').contents().filter(function() {
37 return ((this.nodeType == 3) && (this.data.trim().length > 0));
38 }).wrap('<span>');
39 });
40
41 // define the behavior of the button when it's clicked
42 $('.copybutton').click(function(e){
43 e.preventDefault();
44 var button = $(this);
45 if (button.data('hidden') === 'false') {
46 // hide the code output
47 button.parent().find('.go, .gp, .gt').hide();
48 button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden');
49 button.css('text-decoration', 'line-through');
50 button.attr('title', show_text);
51 button.data('hidden', 'true');
52 } else {
53 // show the code output
54 button.parent().find('.go, .gp, .gt').show();
55 button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible');
56 button.css('text-decoration', 'none');
57 button.attr('title', hide_text);
58 button.data('hidden', 'false');
59 }
60 });
61 });
+0
-4
docs/_templates/breadcrumbs.html less more
0 {%- extends "sphinx_rtd_theme/breadcrumbs.html" %}
1
2 {% block breadcrumbs_aside %}
3 {% endblock %}
+0
-112
docs/_templates/layout.html less more
0 {% extends '!layout.html' %}
1 {% block document %}
2 {{super()}}
3
4 <div class="github-corner">
5 <svg width="120" height="120" viewBox="0 0 250 250">
6 <a fill="transparent" href="https://github.com/{{github_user}}/{{github_repo}}" style="pointer-events:auto">
7 <path d="M0,0 L250,250 L250,0 Z"></path>
8 </a>
9 <g class="octocat">
10 <path fill="#343131" d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" ></path>
11 <path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
12 fill="#ffffff" style="transform-origin: 130px 106px;" class="octo-arm"></path>
13 <path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="#ffffff" class="octo-body"></path>
14 <text x="240px" y="-10px" class="octo-click-text" stroke="#ffffff" fill="#ffffff">CLICK</text>
15 <g class="octo-glasses" visibility="hidden">
16 <svg fill="#343131" width="640" height="480">
17 <defs>
18 <symbol id="glasses" viewBox="0 0 512 512">
19 <path d="m465.4,247c-2.2,-22 -12.4,-43 -28.9,-58.4c-17.1,-15.9 -39.3,-24.7 -62.7,-24.7c-41.5,0 -77.3,27.4 -88.5,67c-7,-7 -18.5,-11.7 -29.3,-11.7c-10.8,0 -22.3,4.7 -29.3,11.7c-11.2,-39.6 -47,-67 -88.5,-67c-23.3,0 -45.6,8.7 -62.7,24.6c-16.5,15.5 -26.7,36.5 -28.9,58.5l-14.6,0l0,18l14.6,0c2.2,22 12.4,43 28.9,58.4c17.1,15.9 39.3,24.7 62.7,24.7c50.8,0 92.1,-41.2 92.1,-92c0,-0.1 0,-0.1 0,-0.1l0,0c0,-9.9 11.5,-21.6 25.7,-21.6s25.7,11.7 25.7,21.6l0,0c0,0 0,0 0,0.1c0,50.8 41.3,92 92.1,92c23.3,0 45.6,-8.7 62.7,-24.7c16.5,-15.4 26.7,-36.5 28.9,-58.5l14.6,0l0,-18l-14.6,0l0,0.1z" />
20 </symbol>
21 </defs>
22 <g>
23 <use x="530" y="-70" xlink:href="#glasses" transform="rotate(45 100,75) matrix(0.185,0,0,0.185,0,0) " />
24 </g>
25 </svg>
26 </g>
27 </g>
28 </svg>
29 </div>
30
31 <style>
32 .github-corner {
33 pointer-events: none;
34 position: absolute;
35 top: 0;
36 right: 0;
37 border: 0;
38 mix-blend-mode: darken;
39 }
40 .github-corner:hover .octocat{
41 transform-origin: center;
42 animation: octocat-grow 5s ease-in-out forwards;
43 }
44 @keyframes octocat-grow{
45 16%, 66%{
46 transform: scale(1.2);
47 }
48 33%{
49 transform: scale(1.1);
50 }
51 50%, 100%{
52 transform: scale(1.3);
53 }
54 83%{
55 transform: scale(1.4);
56 }
57 }
58 .octo-click-text {
59 font-weight: normal;
60 text-anchor: middle;
61 font-family: 'Avenir', Helvetica, Arial, sans-serif;
62 font-size: 20px;
63 stroke-width: 2px;
64 transform: rotate(45deg);
65 opacity: 0;
66 }
67 .github-corner:hover .octo-click-text {
68 animation: octocat-text 5s linear forwards
69 }
70 @keyframes octocat-text {
71 99% {
72 opacity: 0;
73 }
74 100% {
75 opacity: 1;
76 }
77 }
78 .github-corner:hover .octo-arm{
79 animation: octocat-wave 400ms linear infinite;
80 }
81 @keyframes octocat-wave {
82 0%,50%,100% {
83 transform: rotate(0)
84 }
85 25% {
86 transform: rotate(-25deg)
87 }
88 75% {
89 transform: rotate(10deg)
90 }
91 }
92 .github-corner .octo-glasses{
93 visibility: visible;
94 opacity: 0;
95 transition: opacity 5s;
96 }
97 .github-corner:hover .octo-glasses{
98 opacity: 1;
99 animation: octocat-glass-wiggle 400ms linear forwards;
100 animation-delay: 4s;
101 }
102 @keyframes octocat-glass-wiggle {
103 0%, 50%, 100% {
104 transform: translateX(0px) translateY(0px);
105 }
106 25%, 75% {
107 transform: translateX(3px) translateY(-3px);
108 }
109 }
110 </style>
111 {% endblock %}
+0
-7
docs/api/logger.rst less more
0 ``loguru.logger``
1 =================
2
3 .. automodule:: loguru._logger
4
5 .. autoclass:: loguru._logger.Logger()
6 :members:
+0
-9
docs/api/type_hints.rst less more
0 .. _type-hints:
1
2 Type hints
3 ==========
4
5 .. automodule:: autodoc_stub_file.loguru
6
7
8 See also: :ref:`type-hints-source`.
+0
-9
docs/api/type_hints_source.rst less more
0 :orphan:
1
2 .. _type-hints-source:
3
4 Source code for type hints
5 ==========================
6
7 .. include:: ../../loguru/__init__.pyi
8 :literal:
+0
-49
docs/api.rst less more
0 API Reference
1 =============
2
3 .. automodule:: loguru
4
5 .. toctree::
6 :hidden:
7 :includehidden:
8
9 api/logger.rst
10 api/type_hints.rst
11
12
13 * :class:`~loguru._logger.Logger`
14
15 * :meth:`~loguru._logger.Logger.add`
16
17 * :ref:`sink`
18 * :ref:`message`
19 * :ref:`levels`
20 * :ref:`record`
21 * :ref:`time`
22 * :ref:`file`
23 * :ref:`color`
24 * :ref:`env`
25
26 * :meth:`~loguru._logger.Logger.remove`
27 * :meth:`~loguru._logger.Logger.complete`
28 * :meth:`~loguru._logger.Logger.catch`
29 * :meth:`~loguru._logger.Logger.opt`
30 * :meth:`~loguru._logger.Logger.bind`
31 * :meth:`~loguru._logger.Logger.contextualize`
32 * :meth:`~loguru._logger.Logger.patch`
33 * :meth:`~loguru._logger.Logger.level`
34 * :meth:`~loguru._logger.Logger.disable`
35 * :meth:`~loguru._logger.Logger.enable`
36 * :meth:`~loguru._logger.Logger.configure`
37 * :meth:`~loguru._logger.Logger.parse`
38 * :meth:`~loguru._logger.Logger.trace`
39 * :meth:`~loguru._logger.Logger.debug`
40 * :meth:`~loguru._logger.Logger.info`
41 * :meth:`~loguru._logger.Logger.success`
42 * :meth:`~loguru._logger.Logger.warning`
43 * :meth:`~loguru._logger.Logger.error`
44 * :meth:`~loguru._logger.Logger.critical`
45 * :meth:`~loguru._logger.Logger.log`
46 * :meth:`~loguru._logger.Logger.exception`
47
48 * :ref:`type-hints`
+0
-179
docs/conf.py less more
0 # -*- coding: utf-8 -*-
1 #
2 # Configuration file for the Sphinx documentation builder.
3 #
4 # This file does only contain a selection of the most common options. For a
5 # full list see the documentation:
6 # http://www.sphinx-doc.org/en/master/config
7
8 # -- Path setup --------------------------------------------------------------
9
10 # If extensions (or modules to document with autodoc) are in another directory,
11 # add these directories to sys.path here. If the directory is relative to the
12 # documentation root, use os.path.abspath to make it absolute, like shown here.
13
14 import os
15 import sys
16
17 sys.path.insert(0, os.path.abspath(".."))
18 sys.path.insert(0, os.path.abspath("_extensions"))
19
20
21 # -- Project information -----------------------------------------------------
22
23 project = "loguru"
24 copyright = "2018, Delgan"
25 author = "Delgan"
26
27 # The short X.Y version
28 version = ""
29 # The full version, including alpha/beta/rc tags
30 release = ""
31
32
33 # -- General configuration ---------------------------------------------------
34
35 # If your documentation needs a minimal Sphinx version, state it here.
36 #
37 # needs_sphinx = '1.0'
38
39 # Add any Sphinx extension module names here, as strings. They can be
40 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
41 # ones.
42 extensions = [
43 "sphinx.ext.autodoc",
44 "sphinx.ext.napoleon",
45 "sphinx.ext.viewcode",
46 "sphinx.ext.intersphinx",
47 "autodoc_stub_file",
48 ]
49
50 # Add any paths that contain templates here, relative to this directory.
51 templates_path = ["_templates"]
52
53 # The suffix(es) of source filenames.
54 # You can specify multiple suffix as a list of string:
55 #
56 # source_suffix = ['.rst', '.md']
57 source_suffix = ".rst"
58
59 # The master toctree document.
60 master_doc = "index"
61
62 # The language for content autogenerated by Sphinx. Refer to documentation
63 # for a list of supported languages.
64 #
65 # This is also used if you do content translation via gettext catalogs.
66 # Usually you set "language" from the command line for these cases.
67 language = None
68
69 # List of patterns, relative to source directory, that match files and
70 # directories to ignore when looking for source files.
71 # This pattern also affects html_static_path and html_extra_path .
72 exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
73
74 # The name of the Pygments (syntax highlighting) style to use.
75 pygments_style = "sphinx"
76
77
78 # -- Options for HTML output -------------------------------------------------
79
80 # The theme to use for HTML and HTML Help pages. See the documentation for
81 # a list of builtin themes.
82 #
83 html_theme = "sphinx_rtd_theme"
84
85 # Theme options are theme-specific and customize the look and feel of a theme
86 # further. For a list of options available for each theme, see the
87 # documentation.
88 #
89 html_theme_options = {}
90
91 # Add any paths that contain custom static files (such as style sheets) here,
92 # relative to this directory. They are copied after the builtin static files,
93 # so a file named "default.css" will overwrite the builtin "default.css".
94 html_static_path = ["_static"]
95
96 # Custom sidebar templates, must be a dictionary that maps document names
97 # to template names.
98 #
99 # The default sidebars (for documents that don't match any pattern) are
100 # defined by theme itself. Builtin themes are using these templates by
101 # default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
102 # 'searchbox.html']``.
103 #
104 # html_sidebars = {}
105
106 # Try to fix formatting with Sphinx v2
107 html4_writer = True
108
109 # -- Options for HTMLHelp output ---------------------------------------------
110
111 # Output file base name for HTML help builder.
112 htmlhelp_basename = "logurudoc"
113
114
115 # -- Options for LaTeX output ------------------------------------------------
116
117 latex_elements = {
118 # The paper size ('letterpaper' or 'a4paper').
119 #
120 # 'papersize': 'letterpaper',
121 # The font size ('10pt', '11pt' or '12pt').
122 #
123 # 'pointsize': '10pt',
124 # Additional stuff for the LaTeX preamble.
125 #
126 # 'preamble': '',
127 # Latex figure (float) alignment
128 #
129 # 'figure_align': 'htbp',
130 }
131
132 # Grouping the document tree into LaTeX files. List of tuples
133 # (source start file, target name, title,
134 # author, documentclass [howto, manual, or own class]).
135 latex_documents = [(master_doc, "loguru.tex", "loguru Documentation", "Delgan", "manual")]
136
137
138 # -- Options for manual page output ------------------------------------------
139
140 # One entry per manual page. List of tuples
141 # (source start file, name, description, authors, manual section).
142 man_pages = [(master_doc, "loguru", "loguru Documentation", [author], 1)]
143
144
145 # -- Options for Texinfo output ----------------------------------------------
146
147 # Grouping the document tree into Texinfo files. List of tuples
148 # (source start file, target name, title, author,
149 # dir menu entry, description, category)
150 texinfo_documents = [
151 (
152 master_doc,
153 "loguru",
154 "loguru Documentation",
155 author,
156 "loguru",
157 "One line description of project.",
158 "Miscellaneous",
159 )
160 ]
161
162
163 # -- Extension configuration -------------------------------------------------
164
165 html_context = {"github_user": "delgan", "github_repo": "loguru"}
166
167 add_module_names = False
168 autodoc_member_order = "bysource"
169 intersphinx_mapping = {"python": ("https://docs.python.org/3", None)}
170 html_show_sourcelink = False
171 html_show_copyright = False
172 napoleon_use_rtype = False
173 napoleon_use_ivar = True
174
175
176 def setup(app):
177 app.add_stylesheet("css/loguru.css")
178 app.add_javascript("js/coppybutton.js")
+0
-14
docs/index.rst less more
0 .. include:: ../README.rst
1 :end-before: end-of-readme-intro
2
3 Table of contents
4 =================
5
6 .. toctree::
7 :includehidden:
8 :maxdepth: 2
9
10 overview.rst
11 api.rst
12 resources.rst
13 project.rst
+0
-36
docs/make.bat less more
0 @ECHO OFF
1
2 pushd %~dp0
3
4 REM Command file for Sphinx documentation
5
6 if "%SPHINXBUILD%" == "" (
7 set SPHINXBUILD=sphinx-build
8 )
9 set SOURCEDIR=.
10 set BUILDDIR=_build
11 set SPHINXPROJ=loguru
12
13 if "%1" == "" goto help
14
15 %SPHINXBUILD% >NUL 2>NUL
16 if errorlevel 9009 (
17 echo.
18 echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
19 echo.installed, then set the SPHINXBUILD environment variable to point
20 echo.to the full path of the 'sphinx-build' executable. Alternatively you
21 echo.may add the Sphinx directory to PATH.
22 echo.
23 echo.If you don't have Sphinx installed, grab it from
24 echo.http://sphinx-doc.org/
25 exit /b 1
26 )
27
28 %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
29 goto end
30
31 :help
32 %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
33
34 :end
35 popd
+0
-6
docs/overview.rst less more
0 Overview
1 ========
2
3 .. include:: ../README.rst
4 :start-after: end-of-readme-intro
5 :end-before: end-of-readme-usage
+0
-4
docs/project/changelog.rst less more
0 Changelog
1 #########
2
3 .. include:: ../../CHANGELOG.rst
+0
-4
docs/project/contributing.rst less more
0 Contributing
1 ############
2
3 .. include:: ../../CONTRIBUTING.rst
+0
-4
docs/project/license.rst less more
0 License
1 #######
2
3 .. include:: ../../LICENSE
+0
-8
docs/project.rst less more
0 Project Information
1 ===================
2
3 .. toctree::
4
5 project/contributing.rst
6 project/license.rst
7 project/changelog.rst
+0
-251
docs/resources/migration.rst less more
0 Switching from standard ``logging`` to ``loguru``
1 =================================================
2
3 .. highlight:: python3
4
5 .. |getLogger| replace:: :func:`~logging.getLogger`
6 .. |addLevelName| replace:: :func:`~logging.addLevelName`
7 .. |getLevelName| replace:: :func:`~logging.getLevelName`
8 .. |Handler| replace:: :class:`~logging.Handler`
9 .. |Logger| replace:: :class:`~logging.Logger`
10 .. |Filter| replace:: :class:`~logging.Filter`
11 .. |Formatter| replace:: :class:`~logging.Formatter`
12 .. |LoggerAdapter| replace:: :class:`~logging.LoggerAdapter`
13 .. |logger.setLevel| replace:: :meth:`~logging.Logger.setLevel`
14 .. |logger.addFilter| replace:: :meth:`~logging.Logger.addFilter`
15 .. |makeRecord| replace:: :meth:`~logging.Logger.makeRecord`
16 .. |disable| replace:: :meth:`~logging.Logger.disable`
17 .. |propagate| replace:: :attr:`~logging.Logger.propagate`
18 .. |addHandler| replace:: :meth:`~logging.Logger.addHandler`
19 .. |removeHandler| replace:: :meth:`~logging.Logger.removeHandler`
20 .. |handle| replace:: :meth:`~logging.Handler.handle`
21 .. |emit| replace:: :meth:`~logging.Handler.emit`
22 .. |handler.setLevel| replace:: :meth:`~logging.Handler.setLevel`
23 .. |handler.addFilter| replace:: :meth:`~logging.Handler.addFilter`
24 .. |setFormatter| replace:: :meth:`~logging.Handler.setFormatter`
25 .. |createLock| replace:: :meth:`~logging.Handler.createLock`
26 .. |acquire| replace:: :meth:`~logging.Handler.acquire`
27 .. |release| replace:: :meth:`~logging.Handler.release`
28 .. |isEnabledFor| replace:: :meth:`~logging.Logger.isEnabledFor`
29 .. |dictConfig| replace:: :func:`~logging.config.dictConfig`
30 .. |basicConfig| replace:: :func:`~logging.basicConfig`
31
32 .. |add| replace:: :meth:`~loguru._logger.Logger.add()`
33 .. |remove| replace:: :meth:`~loguru._logger.Logger.remove()`
34 .. |bind| replace:: :meth:`~loguru._logger.Logger.bind`
35 .. |opt| replace:: :meth:`~loguru._logger.Logger.opt()`
36 .. |level| replace:: :meth:`~loguru._logger.Logger.level()`
37 .. |configure| replace:: :meth:`~loguru._logger.Logger.configure()`
38
39 .. |pytest| replace:: ``pytest``
40 .. _pytest: https://docs.pytest.org/en/latest/
41 .. |caplog| replace:: ``caplog``
42 .. _caplog: https://docs.pytest.org/en/latest/logging.html?highlight=caplog#caplog-fixture
43
44 .. _`GH#59`: https://github.com/Delgan/loguru/issues/59
45
46
47
48 Fundamental differences between ``logging`` and ``loguru``
49 ----------------------------------------------------------
50
51 Although ``loguru`` is written "from scratch" and does not rely on standard ``logging`` internally, both libraries serve the same purpose: provide functionalities to implement a flexible event logging system. The main difference is that standard ``logging`` requires the user to explicitly instantiate named ``Logger`` and configure them with ``Handler``, ``Formatter`` and ``Filter``, while ``loguru`` tries to narrow down the amount of configuration steps.
52
53 Apart from that, usage is globally the same, once the ``logger`` object is created or imported you can start using it to log messages with the appropriate severity (``logger.debug("Dev message")``, ``logger.warning("Danger!")``, etc.), messages which are then sent to the configured handlers.
54
55 As for standard logging, default logs are sent to ``sys.stderr`` rather than ``sys.stdout``. The POSIX standard specifies that ``stderr`` is the correct stream for "diagnostic output". The main compelling case in favor or logging to ``stderr`` is that it avoids mixing the actual output of the application with debug information. Consider for example pipe-redirection like ``python my_app.py | other_app`` which would not be possible if logs were emitted to ``stdout``. Another major benefit is that Python resolves encoding issues on ``sys.stderr`` by escaping faulty characters (``"backslashreplace"`` policy) while it raises an ``UnicodeEncodeError`` (``"strict"`` policy) on ``sys.stdout``.
56
57
58 Replacing ``getLogger()`` function
59 ----------------------------------
60
61 It is usual to call |getLogger| at the beginning of each file to retrieve and use a logger across your module, like this: ``logger = logging.getLogger(__name__)``.
62
63 Using Loguru, there is no need to explicitly get and name a logger, ``from loguru import logger`` suffices. Each time this imported logger is used, a :ref:`record <record>` is created and will automatically contain the contextual ``__name__`` value.
64
65 As for standard logging, the ``name`` attribute can then be used to format and filter your logs.
66
67
68 Replacing ``Logger`` objects
69 ----------------------------
70
71 Loguru replaces the standard |Logger| configuration by a proper :ref:`sink <sink>` definition. Instead of configuring a logger, you should |add| and parametrize your handlers. The |logger.setLevel| and |logger.addFilter| are suppressed by the configured sink ``level`` and ``filter`` parameters. The |propagate| attribute and |disable| method can be replaced by the ``filter`` option too. The |makeRecord| method can be replaced using the ``record["extra"]`` dict.
72
73 Sometimes, more fine-grained control is required over a particular logger. In such case, Loguru provides the |bind| method which can be in particular used to generate a specifically named logger.
74
75 For example, by calling ``other_logger = logger.bind(name="other")``, each :ref:`message <message>` logged using ``other_logger`` will populate the ``record["extra"]`` dict with the ``name`` value, while using ``logger`` won't. This permits differentiating logs from ``logger`` or ``other_logger`` from within your sink or filter function.
76
77 Let suppose you want a sink to log only some very specific messages::
78
79 def specific_only(record):
80 return "specific" in record["extra"]
81
82 logger.add("specific.log", filter=specific_only)
83
84 specific_logger = logger.bind(specific=True)
85
86 logger.info("General message") # This is filtered-out by the specific sink
87 specific_logger.info("Module message") # This is accepted by the specific sink (and others)
88
89 Another example, if you want to attach one sink to one named logger::
90
91 # Only write messages from "a" logger
92 logger.add("a.log", filter=lambda record: record["extra"].get("name") == "a")
93 # Only write messages from "b" logger
94 logger.add("b.log", filter=lambda record: record["extra"].get("name") == "b")
95
96 logger_a = logger.bind(name="a")
97 logger_b = logger.bind(name="b")
98
99 logger_a.info("Message A")
100 logger_b.info("Message B")
101
102
103 Replacing ``Handler``, ``Filter`` and ``Formatter`` objects
104 -----------------------------------------------------------
105
106 Standard ``logging`` requires you to create an |Handler| object and then call |addHandler|. Using Loguru, the handlers are started using |add|. The sink defines how the handler should manage incoming logging messages, as would do |handle| or |emit|. To log from multiple modules, you just have to import the logger, all messages will be dispatched to the added handlers.
107
108 While calling |add|, the ``level`` parameter replaces |handler.setLevel|, the ``format`` parameter replaces |setFormatter|, the ``filter`` parameter replaces |handler.addFilter|. The thread-safety is managed automatically by Loguru, so there is no need for |createLock|, |acquire| nor |release|. The equivalent method of |removeHandler| is |remove| which should be used with the identifier returned by |add|.
109
110 Note that you don't necessarily need to replace your |Handler| objects because |add| accepts them as valid sinks.
111
112 In short, you can replace::
113
114 logger.setLevel(logging.DEBUG)
115
116 fh = logging.FileHandler("spam.log")
117 fh.setLevel(logging.DEBUG)
118
119 ch = logging.StreamHandler()
120 ch.setLevel(logging.ERROR)
121
122 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
123 fh.setFormatter(formatter)
124 ch.setFormatter(formatter)
125
126 logger.addHandler(fh)
127 logger.addHandler(ch)
128
129 With::
130
131 fmt = "{time} - {name} - {level} - {message}"
132 logger.add("spam.log", level="DEBUG", format=fmt)
133 logger.add(sys.stderr, level="ERROR", format=fmt)
134
135
136 Replacing ``%`` style formatting of messages
137 --------------------------------------------
138
139 Loguru only supports ``{}``-style formatting.
140
141 You have to replace ``logger.debug("Some variable: %s", var)`` with ``logger.debug("Some variable: {}", var)``. All ``*args`` and ``**kwargs`` passed to a logging function are used to call ``message.format(*args, **kwargs)``. Arguments which do not appear in the message string are simply ignored. Note that passing arguments to logging functions like this may be useful to (slightly) improve performances: it avoids formatting the message if the level is too low to pass any configured handler.
142
143 For converting the general format used by |Formatter|, refer to :ref:`list of available record tokens <record>`.
144
145 For converting the date format used by ``datefmt``, refer to :ref:`list of available date tokens<time>`.
146
147
148 Replacing ``exc_info`` argument
149 -------------------------------
150
151 While calling standard logging function, you can pass ``exc_info`` as an argument to add stacktrace to the message. Instead of that, you should use the |opt| method with ``exception`` parameter, replacing ``logger.debug("Debug error:", exc_info=True)`` with ``logger.opt(exception=True).debug("Debug error:")``.
152
153 The formatted exception will include the whole stacktrace and variables. To prevent that, make sure to use ``backtrace=False`` and ``diagnose=False`` while adding your sink.
154
155
156 Replacing ``extra`` argument and ``LoggerAdapter`` objects
157 ----------------------------------------------------------
158
159 To pass contextual information to log messages, replace ``extra`` by inlining |bind| method::
160
161 context = {"clientip": "192.168.0.1", "user": "fbloggs"}
162
163 logger.info("Protocol problem", extra=context) # Standard logging
164 logger.bind(**context).info("Protocol problem") # Loguru
165
166 This will add context information to the ``record["extra"]`` dict of your logged message, so make sure to configure your handler format adequately::
167
168 fmt = "%(asctime)s %(clientip)s %(user)s %(message)s" # Standard logging
169 fmt = "{time} {extra[clientip]} {extra[user]} {message}" # Loguru
170
171 You can also replace |LoggerAdapter| by calling ``logger = logger.bind(clientip="192.168.0.1")`` before using it, or by assigning the bound logger to a class instance::
172
173 class MyClass:
174
175 def __init__(self, clientip):
176 self.logger = logger.bind(clientip=clientip)
177
178 def func(self):
179 self.logger.debug("Running func")
180
181
182 Replacing ``isEnabledFor()`` method
183 -----------------------------------
184
185 If you wish to log useful information for your debug logs, but don't want to pay the performance penalty in release mode while no debug handler is configured, standard logging provides the |isEnabledFor| method::
186
187 if logger.isEnabledFor(logging.DEBUG):
188 logger.debug("Message data: %s", expensive_func())
189
190 You can replace this with the |opt| method and ``lazy`` option::
191
192 # Arguments should be functions which will be called if needed
193 logger.opt(lazy=True).debug("Message data: {}", expensive_func)
194
195
196 Replacing ``addLevelName()`` and ``getLevelName()`` functions
197 -------------------------------------------------------------
198
199 To add a new custom level, you can replace |addLevelName| with the |level| function::
200
201 logging.addLevelName(33, "CUSTOM") # Standard logging
202 logger.level("CUSTOM", no=45, color="<red>", icon="🚨") # Loguru
203
204 The same function can be used to replace |getLevelName|::
205
206 logger.getLevelName(33) # => "CUSTOM"
207 logger.level("CUSTOM") # => (name='CUSTOM', no=33, color="<red>", icon="🚨")
208
209 Note that contrary to standard logging, Loguru doesn't associate severity number to any level, levels are only identified by their name.
210
211
212 Replacing ``basicConfig()`` and ``dictConfig()`` functions
213 ----------------------------------------------------------
214
215 The |basicConfig| and |dictConfig| functions are replaced by the |configure| method.
216
217 This does not accept ``config.ini`` files, though, so you have to handle that yourself using your favorite format.
218
219
220 Making things work with Pytest and caplog
221 -----------------------------------------
222
223 |pytest|_ is a very common testing framework. The |caplog|_ fixture captures logging output so that it can be tested against. For example::
224
225 # `some_func` adds two numbers, and logs a warning if the first is < 1
226 def test_some_func_logs_warning(caplog):
227 assert some_func(-1, 3) == 2
228 assert "Oh no!" in caplog.text
229
230 If you've followed all the migration guidelines thus far, you'll notice that this test will fail. This is because |pytest|_ links to the standard library's ``logging`` module.
231
232 So to fix things, we need to add a sink that propagates Loguru to ``logging``.
233 This is done on the fixture itself by mokeypatching |caplog|_. In your ``conftest.py`` file, add the following::
234
235 import logging
236 import pytest
237 from _pytest.logging import caplog as _caplog
238 from loguru import logger
239
240 @pytest.fixture
241 def caplog(_caplog):
242 class PropogateHandler(logging.Handler):
243 def emit(self, record):
244 logging.getLogger(record.name).handle(record)
245
246 handler_id = logger.add(PropogateHandler(), format="{message} {extra}")
247 yield _caplog
248 logger.remove(handler_id)
249
250 Run your tests and things should all be working as expected. Additional information can be found in `GH#59`_.
+0
-795
docs/resources/recipes.rst less more
0 Code snippets and recipes for ``loguru``
1 ========================================
2
3 .. highlight:: python3
4
5 .. |print| replace:: :func:`print()`
6 .. |open| replace:: :func:`open()`
7 .. |sys.__stdout__| replace:: :data:`sys.__stdout__`
8 .. |sys.stdout| replace:: :data:`sys.stdout`
9 .. |sys.stderr| replace:: :data:`sys.stderr`
10 .. |warnings| replace:: :mod:`warnings`
11 .. |warnings.showwarning| replace:: :func:`warnings.showwarning`
12 .. |contextlib.redirect_stdout| replace:: :func:`contextlib.redirect_stdout`
13 .. |copy.deepcopy| replace:: :func:`copy.deepcopy`
14 .. |os.fork| replace:: :func:`os.fork`
15 .. |multiprocessing| replace:: :mod:`multiprocessing`
16 .. |traceback| replace:: :mod:`traceback`
17 .. |Thread| replace:: :class:`~threading.Thread`
18 .. |Process| replace:: :class:`~multiprocessing.Process`
19 .. |Pool| replace:: :class:`~multiprocessing.pool.Pool`
20 .. |Pool.map| replace:: :meth:`~multiprocessing.pool.Pool.map`
21 .. |Pool.apply| replace:: :meth:`~multiprocessing.pool.Pool.apply`
22 .. |sys.stdout.reconfigure| replace:: :meth:`sys.stdout.reconfigure() <io.TextIOWrapper.reconfigure>`
23 .. |UnicodeEncodeError| replace:: :exc:`UnicodeEncodeError`
24
25 .. |add| replace:: :meth:`~loguru._logger.Logger.add()`
26 .. |remove| replace:: :meth:`~loguru._logger.Logger.remove()`
27 .. |enable| replace:: :meth:`~loguru._logger.Logger.enable()`
28 .. |disable| replace:: :meth:`~loguru._logger.Logger.disable()`
29 .. |bind| replace:: :meth:`~loguru._logger.Logger.bind()`
30 .. |patch| replace:: :meth:`~loguru._logger.Logger.patch()`
31 .. |opt| replace:: :meth:`~loguru._logger.Logger.opt()`
32 .. |log| replace:: :meth:`~loguru._logger.Logger.log()`
33 .. |level| replace:: :meth:`~loguru._logger.Logger.level()`
34 .. |configure| replace:: :meth:`~loguru._logger.Logger.configure()`
35 .. |complete| replace:: :meth:`~loguru._logger.Logger.complete()`
36
37 .. _`unicode`: https://docs.python.org/3/howto/unicode.html
38
39 .. |stackprinter| replace:: ``stackprinter``
40 .. _stackprinter: https://github.com/cknd/stackprinter
41
42 .. _`GH#88`: https://github.com/Delgan/loguru/issues/88
43 .. _`GH#132`: https://github.com/Delgan/loguru/issues/132
44
45 Changing the level of an existing handler
46 -----------------------------------------
47
48 Once a handler has been added, it is actually not possible to update it. This is a deliberate choice in order to keep the Loguru's API minimal. Several solutions are possible, tough, if you need to change the configured ``level`` of a handler. Chose the one that best fits your use case.
49
50 The most straightforward workaround is to |remove| your handler and then re-|add| it with the updated ``level`` parameter. To do so, you have to keep a reference to the identifier number returned while adding a handler::
51
52 handler_id = logger.add(sys.stderr, level="WARNING")
53
54 logger.info("Logging 'WARNING' or higher messages only")
55
56 ...
57
58 logger.remove(handler_id)
59 logger.add(sys.stderr, level="DEBUG")
60
61 logger.debug("Logging 'DEBUG' messages too")
62
63
64 Alternatively, you can combine the |bind| method with the ``filter`` argument to provide a function dynamically filtering logs based on their level::
65
66 def my_filter(record):
67 if record["extra"].get("warn_only"): # "warn_only" is bound to the logger and set to 'True'
68 return record["level"].no >= logger.level("WARNING").no
69 return True # Fallback to default 'level' configured while adding the handler
70
71
72 logger.add(sys.stderr, filter=my_filter, level="DEBUG")
73
74 # Use this logger first, debug messages are filtered out
75 logger = logger.bind(warn_only=True)
76 logger.warn("Initialization in progress")
77
78 # Then you can use this one to log all messages
79 logger = logger.bind(warn_only=False)
80 logger.debug("Back to debug messages")
81
82
83 Finally, more advanced control over handler's level can be achieved by using a callable object as the ``filter``::
84
85 class MyFilter:
86
87 def __init__(self, level):
88 self.level = level
89
90 def __call__(self, record):
91 levelno = logger.level(self.level).no
92 return record["level"].no >= levelno
93
94 my_filter = MyFilter("WARNING")
95 logger.add(sys.stderr, filter=my_filter, level=0)
96
97 logger.warning("OK")
98 logger.debug("NOK")
99
100 my_filter.level = "DEBUG"
101 logger.debug("OK")
102
103
104 Sending and receiving log messages across network or processes
105 --------------------------------------------------------------
106
107 It is possible to transmit logs between different processes and even between different computer if needed. Once the connection is established between the two Python programs, this requires serializing the logging record in one side while re-constructing the message on the other hand.
108
109 This can be achieved using a custom sink for the client and |patch| for the server.
110
111 .. code::
112
113 # client.py
114 import sys
115 import socket
116 import struct
117 import time
118 import pickle
119
120 from loguru import logger
121
122
123 class SocketHandler:
124
125 def __init__(self, host, port):
126 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
127 self.sock.connect((host, port))
128
129 def write(self, message):
130 record = message.record
131 data = pickle.dumps(record)
132 slen = struct.pack(">L", len(data))
133 self.sock.send(slen + data)
134
135 logger.configure(handlers=[{"sink": SocketHandler('localhost', 9999)}])
136
137 while 1:
138 time.sleep(1)
139 logger.info("Sending message from the client")
140
141
142 .. code::
143
144 # server.py
145 import socketserver
146 import pickle
147 import struct
148
149 from loguru import logger
150
151
152 class LoggingStreamHandler(socketserver.StreamRequestHandler):
153
154 def handle(self):
155 while True:
156 chunk = self.connection.recv(4)
157 if len(chunk) < 4:
158 break
159 slen = struct.unpack('>L', chunk)[0]
160 chunk = self.connection.recv(slen)
161 while len(chunk) < slen:
162 chunk = chunk + self.connection.recv(slen - len(chunk))
163 record = pickle.loads(chunk)
164 level, message = record["level"], record["message"]
165 logger.patch(lambda record: record.update(record)).log(level, message)
166
167 server = socketserver.TCPServer(('localhost', 9999), LoggingStreamHandler)
168 server.serve_forever()
169
170
171 Keep in mind though that `pickling is unsafe <https://intoli.com/blog/dangerous-pickles/>`_, use this with care.
172
173
174 Resolving ``UnicodeEncodeError`` and other encoding issues
175 ----------------------------------------------------------
176
177 When you write a log message, the handler may need to encode the received `unicode`_ string to a specific sequence of bytes. The ``encoding`` used to perform this operation varies depending on the sink type and your environment. Problem may occur if you try to write a character which is not supported by the handler ``encoding``. In such case, it's likely that Python will raise an |UnicodeEncodeError|.
178
179 For example, this may happen while printing to the terminal::
180
181 print("天")
182 # UnicodeEncodeError: 'charmap' codec can't encode character '\u5929' in position 0: character maps to <undefined>
183
184 A similar error may occur while writing to a file which has not been opened using an appropriate encoding. Most common problem happen while logging to standard output or to a file on Windows. So, how to avoid such error? Simply by properly configuring your handler so that it can process any kind of unicode string.
185
186 If you are encountering this error while logging to ``stdout``, you have several options:
187
188 * Use |sys.stderr| instead of |sys.stdout| (the former will escape faulty characters rather than raising exception)
189 * Set the :envvar:`PYTHONIOENCODING` environment variable to ``utf-8``
190 * Call |sys.stdout.reconfigure| with ``encoding='utf-8'`` and / or ``errors='backslashreplace'``
191
192 If you are using a file sink, you can configure the ``errors`` or ``encoding`` parameter while adding the handler like ``logger.add("file.log", encoding="utf8")`` for example. All additional ``**kwargs`` argument are passed to the built-in |open| function.
193
194 For other types of handlers, you have to check if there is a way to parametrize encoding or fallback policy.
195
196
197 Logging entry and exit of functions with a decorator
198 ----------------------------------------------------
199
200 In some cases, it might be useful to log entry and exit values of a function. Although Loguru doesn't provide such feature out of the box, it can be easily implemented by using Python decorators::
201
202 import functools
203 from loguru import logger
204
205
206 def logger_wraps(*, entry=True, exit=True, level="DEBUG"):
207
208 def wrapper(func):
209 name = func.__name__
210
211 @functools.wraps(func)
212 def wrapped(*args, **kwargs):
213 logger_ = logger.opt(depth=1)
214 if entry:
215 logger_.log(level, "Entering '{}' (args={}, kwargs={})", name, args, kwargs)
216 result = func(*args, **kwargs)
217 if exit:
218 logger_.log(level, "Exiting '{}' (result={})", name, result)
219 return result
220
221 return wrapped
222
223 return wrapper
224
225 You could then use it like this::
226
227 @logger_wraps()
228 def foo(a, b, c):
229 logger.info("Inside the function")
230 return a * b * c
231
232 def bar():
233 foo(2, 4, c=8)
234
235 bar()
236
237
238 Which would result in::
239
240 2019-04-07 11:08:44.198 | DEBUG | __main__:bar:30 - Entering 'foo' (args=(2, 4), kwargs={'c': 8})
241 2019-04-07 11:08:44.198 | INFO | __main__:foo:26 - Inside the function
242 2019-04-07 11:08:44.198 | DEBUG | __main__:bar:30 - Exiting 'foo' (result=64)
243
244
245 Here is another simple example to record timing of a function::
246
247 def timeit(func):
248
249 def wrapped(*args, **kwargs):
250 start = time.time()
251 result = func(*args, **kwargs)
252 end = time.time()
253 logger.debug("Function '{}' executed in {:f} s", func.__name__, end - start)
254 return result
255
256 return wrapped
257
258
259 Using logging function based on custom added levels
260 ---------------------------------------------------
261
262 After adding a new level, it's habitually used with the |log| function::
263
264 logger.level("foobar", no=33, icon="🤖", color="<blue>")
265
266 logger.log("foobar", "A message")
267
268
269 For convenience, one can assign a new logging function which automatically uses the custom added level::
270
271 from functools import partialmethod
272
273 logger.__class__.foobar = partialmethod(logger.__class__.log, "foobar")
274
275 logger.foobar("A message")
276
277
278 The new method need to be added only once and will be usable across all your files importing the ``logger``. Assigning the method to ``logger.__class__`` rather than ``logger`` directly ensures that it stays available even after calling ``logger.bind()``, ``logger.patch()`` and ``logger.opt()`` (because these functions return a new ``logger`` instance).
279
280
281 Preserving an ``opt()`` parameter for the whole module
282 ------------------------------------------------------
283
284 Supposing you wish to color each of your log messages without having to call ``logger.opt(colors=True)`` every time, you can add this at the very beginning of your module::
285
286 logger = logger.opt(colors=True)
287
288 logger.info("It <green>works</>!")
289
290 However, it should be noted that it's not possible to chain |opt| calls, using this method again will reset the ``colors`` option to its default value (which is ``False``). For this reason, it is also necessary to patch the |opt| method so that all subsequent calls continue to use the desired value::
291
292 from functools import partial
293
294 logger = logger.opt(colors=True)
295 logger.opt = partial(logger.opt, colors=True)
296
297 logger.opt(raw=True).info("It <green>still</> works!\n")
298
299
300 Serializing log messages using a custom function
301 ------------------------------------------------
302
303 Each handler added with ``serialize=True`` will create messages by converting the logging record to a valid JSON string. Depending on the sink for which the messages are intended, it may be useful to make changes to the generated string. Instead of using the ``serialize`` parameter, you can implement your own serialization function and use it directly in your sink::
304
305 def serialize(record):
306 subset = {"timestamp": record["time"].timestamp(), "message": record["message"]}
307 return json.dumps(subset)
308
309 def sink(message):
310 serialized = serialize(message.record)
311 print(serialized)
312
313 logger.add(sink)
314
315
316 If you need to send structured logs to a file (or any kind of sink in general), a similar result can be obtained by using a custom ``format`` function::
317
318 def formatter(record):
319 # Note this function returns the string to be formatted, not the actual message to be logged
320 record["extra"]["serialized"] = serialize(record)
321 return "{extra[serialized]}\n"
322
323 logger.add("file.log", format=formatter)
324
325
326 You can also use |patch| for this, so the serialization function will be called only once in case you want to use it in multiple sinks::
327
328 def patching(record):
329 record["extra"]["serialized"] = serialize(record)
330
331 logger = logger.patch(patching)
332
333 # Note that if "format" is not a function, possible exception will be appended to the message
334 logger.add(sys.stderr, format="{extra[serialized]}")
335 logger.add("file.log", format="{extra[serialized]}")
336
337
338 Rotating log file based on both size and time
339 ---------------------------------------------
340
341 The ``rotation`` argument of file sinks accept size or time limits but not both for simplification reasons. However, it is possible to create a custom function to support more advanced scenarios::
342
343 import datetime
344
345 class Rotator:
346
347 def __init__(self, *, size, at):
348 now = datetime.datetime.now()
349
350 self._size_limit = size
351 self._time_limit = now.replace(hour=at.hour, minute=at.minute, second=at.second)
352
353 if now >= self._time_limit:
354 # The current time is already past the target time so it would rotate already.
355 # Add one day to prevent an immediate rotation.
356 self._time_limit += datetime.timedelta(days=1)
357
358 def should_rotate(self, message, file):
359 file.seek(0, 2)
360 if file.tell() + len(message) > self._size_limit:
361 return True
362 if message.record["time"].timestamp() > self._time_limit.timestamp():
363 self._time_limit += datetime.timedelta(days=1)
364 return True
365 return False
366
367 # Rotate file if over 500 MB or at midnight every day
368 rotator = Rotator(size=5e+8, at=datetime.time(0, 0, 0))
369 logger.add("file.log", rotation=rotator.should_rotate)
370
371
372 Dynamically formatting messages to properly align values with padding
373 ---------------------------------------------------------------------
374
375 The default formatter is unable to vertically align log messages because the length of ``{name}``, ``{function}`` and ``{line}`` are not fixed.
376
377 One workaround consists of using padding with some maximum value that should suffice most of the time, like this for example::
378
379 fmt = "{time} | {level: <8} | {name: ^15} | {function: ^15} | {line: >3} | {message}"
380 logger.add(sys.stderr, format=fmt)
381
382 Others solutions are possible by using a formatting function or class. For example, it is possible to dynamically adjust the padding length based on previously encountered values::
383
384 class Formatter:
385
386 def __init__(self):
387 self.padding = 0
388 self.fmt = "{time} | {level: <8} | {name}:{function}:{line}{extra[padding]} | {message}\n{exception}"
389
390 def format(self, record):
391 length = len("{name}:{function}:{line}".format(**record))
392 self.padding = max(self.padding, length)
393 record["extra"]["padding"] = " " * (self.padding - length)
394 return self.fmt
395
396 formatter = Formatter()
397
398 logger.remove()
399 logger.add(sys.stderr, format=formatter.format)
400
401
402 Customizing the formatting of exceptions
403 ----------------------------------------
404
405 Loguru will automatically add the traceback of occurring exception while using ``logger.exception()`` or ``logger.opt(exception=True)``::
406
407 def inverse(x):
408 try:
409 1 / x
410 except ZeroDivisionError:
411 logger.exception("Oups...")
412
413 if __name__ == "__main__":
414 inverse(0)
415
416 .. code-block:: none
417
418 2019-11-15 10:01:13.703 | ERROR | __main__:inverse:8 - Oups...
419 Traceback (most recent call last):
420 File "foo.py", line 6, in inverse
421 1 / x
422 ZeroDivisionError: division by zero
423
424 If the handler is added with ``backtrace=True``, the traceback is extended to see where the exception came from:
425
426 .. code-block:: none
427
428 2019-11-15 10:11:32.829 | ERROR | __main__:inverse:8 - Oups...
429 Traceback (most recent call last):
430 File "foo.py", line 16, in <module>
431 inverse(0)
432 > File "foo.py", line 6, in inverse
433 1 / x
434 ZeroDivisionError: division by zero
435
436 If the handler is added with ``diagnose=True``, then the traceback is annotated to see what caused the problem:
437
438 .. code-block:: none
439
440 Traceback (most recent call last):
441
442 File "foo.py", line 6, in inverse
443 1 / x
444 └ 0
445
446 ZeroDivisionError: division by zero
447
448 It is possible to further personalize the formatting of exception by adding an handler with a custom ``format`` function. For example, supposing you want to format errors using the |stackprinter|_ library::
449
450 import stackprinter
451
452 def format(record):
453 format_ = "{time} {message}\n"
454
455 if record["exception"] is not None:
456 record["extra"]["stack"] = stackprinter.format(record["exception"])
457 format_ += "{extra[stack]}\n"
458
459 return format_
460
461 logger.add(sys.stderr, format=format)
462
463 .. code-block:: none
464
465 2019-11-15T10:46:18.059964+0100 Oups...
466 File foo.py, line 17, in inverse
467 15 def inverse(x):
468 16 try:
469 --> 17 1 / x
470 18 except ZeroDivisionError:
471 ..................................................
472 x = 0
473 ..................................................
474
475 ZeroDivisionError: division by zero
476
477
478 Displaying a stacktrace without using the error context
479 -------------------------------------------------------
480
481 It may be useful in some cases to display the traceback at the time your message is logged, while no exceptions have been raised. Although this feature is not built-in into Loguru as it is more related to debugging than logging, it is possible to |patch| your logger and then display the stacktrace as needed (using the |traceback| module)::
482
483 import traceback
484
485 def add_traceback(record):
486 extra = record["extra"]
487 if extra.get("with_traceback", False):
488 extra["traceback"] = "\n" + "".join(traceback.format_stack())
489 else:
490 extra["traceback"] = ""
491
492 logger = logger.patch(add_traceback)
493 logger.add(sys.stderr, format="{time} - {message}{extra[traceback]}")
494
495 logger.info("No traceback")
496 logger.bind(with_traceback=True).info("With traceback")
497
498 Here is another example that demonstrates how to prefix the logged message with the full call stack::
499
500 import traceback
501 from itertools import takewhile
502
503 def tracing_formatter(record):
504 # Filter out frames coming from Loguru internals
505 frames = takewhile(lambda f: "/loguru/" not in f.filename, traceback.extract_stack())
506 stack = " > ".join("{}:{}:{}".format(f.filename, f.name, f.lineno) for f in frames)
507 record["extra"]["stack"] = stack
508 return "{level} | {extra[stack]} - {message}\n{exception}"
509
510 def foo():
511 logger.info("Deep call")
512
513 def bar():
514 foo()
515
516 logger.remove()
517 logger.add(sys.stderr, format=tracing_formatter)
518
519 bar()
520 # Output: "INFO | script.py:<module>:23 > script.py:bar:18 > script.py:foo:15 - Deep call"
521
522
523 Manipulating newline terminator to write multiple logs on the same line
524 -----------------------------------------------------------------------
525
526 You can temporarily log a message on a continuous line by combining the use of |bind|, |opt| and a custom ``format`` function. This is especially useful if you want to illustrate a step-by-step process in progress, for example::
527
528 def formatter(record):
529 end = record["extra"].get("end", "\n")
530 return "[{time}] {message}" + end + "{exception}"
531
532 logger.add(sys.stderr, format=formatter)
533 logger.add("foo.log", mode="w")
534
535 logger.bind(end="").debug("Progress: ")
536
537 for _ in range(5):
538 logger.opt(raw=True).debug(".")
539
540 logger.opt(raw=True).debug("\n")
541
542 logger.info("Done")
543
544 .. code-block:: none
545
546 [2020-03-26T22:47:01.708016+0100] Progress: .....
547 [2020-03-26T22:47:01.709031+0100] Done
548
549 Note, however, that you may encounter difficulties depending on the sinks you use. Logging is not always appropriate for this type of end-user message.
550
551
552 Capturing standard ``stdout``, ``stderr`` and ``warnings``
553 ----------------------------------------------------------
554
555 The use of logging should be privileged over |print|, yet, it may happen that you don't have plain control over code executed in your application. If you wish to capture standard output, you can suppress |sys.stdout| (and |sys.stderr|) with a custom stream object using |contextlib.redirect_stdout|. You have to take care of first removing the default handler, and not adding a new stdout sink once redirected or that would cause dead lock (you may use |sys.__stdout__| instead)::
556
557 import contextlib
558 import sys
559 from loguru import logger
560
561 class StreamToLogger:
562
563 def __init__(self, level="INFO"):
564 self._level = level
565
566 def write(self, buffer):
567 for line in buffer.rstrip().splitlines():
568 logger.opt(depth=1).log(self._level, line.rstrip())
569
570 def flush(self):
571 pass
572
573 logger.remove()
574 logger.add(sys.__stdout__)
575
576 stream = StreamToLogger()
577 with contextlib.redirect_stdout(stream):
578 print("Standard output is sent to added handlers.")
579
580
581 You may also capture warnings emitted by your application by replacing |warnings.showwarning|::
582
583 import warnings
584 from loguru import logger
585
586 showwarning_ = warnings.showwarning
587
588 def showwarning(message, *args, **kwargs):
589 logger.warning(message)
590 showwarning_(message, *args, **kwargs)
591
592 warnings.showwarning = showwarning
593
594
595 Circumventing modules whose ``__name__`` value is absent
596 --------------------------------------------------------
597
598 Loguru makes use of the global variable ``__name__`` to determine from where the logged message is coming from. However, it may happen in very specific situation (like some Dask distributed environment) that this value is not set. In such case, Loguru will use ``None`` to make up for the lack of the value. This implies that if you want to |disable| messages coming from such special module, you have to explicitly call ``logger.disable(None)``.
599
600 Similar considerations should be taken into account while dealing with the ``filter`` attribute. As ``__name__`` is missing, Loguru will assign the ``None`` value to the ``record["name"]`` entry. It also means that once formatted in your log messages, the ``{name}`` token will be equals to ``"None"``. This can be worked around by manually overriding the ``record["name"]`` value using |patch| from inside the faulty module::
601
602 # If Loguru fails to retrieve the proper "name" value, assign it manually
603 logger = logger.patch(lambda record: record.update(name="my_module"))
604
605 You probably should not worry about all of this except if you noticed that your code is subject to this behavior.
606
607
608 Interoperability with ``tqdm`` iterations
609 -----------------------------------------
610
611 Trying to use the Loguru's ``logger`` during an iteration wrapped by the ``tqdm`` library may disturb the displayed progress bar. As a workaround, one can use the ``tqdm.write()`` function instead of writings logs directly to ``sys.stderr``::
612
613 import time
614
615 from loguru import logger
616 from tqdm import tqdm
617
618 logger.remove()
619 logger.add(lambda msg: tqdm.write(msg, end=""))
620
621 logger.info("Initializing")
622
623 for x in tqdm(range(100)):
624 logger.info("Iterating #{}", x)
625 time.sleep(0.1)
626
627
628 You may encounter problems with colorization of your logs after importing ``tqdm`` using Spyder on Windows. This issue is discussed in `GH#132`_. You can easily circumvent the problem by calling ``colorama.deinit()`` right after your import.
629
630
631 Using Loguru's ``logger`` within a Cython module
632 ------------------------------------------------
633
634 Loguru and Cython do not interoperate very well. This is because Loguru (and logging generally) heavily relies on Python stack frames while Cython, being an alternative Python implementation, try to get rid of these frames for optimization reasons.
635
636 Calling the ``logger`` from code compiled with Cython may raise this kind of exception::
637
638 ValueError: call stack is not deep enough
639
640 This error happens when Loguru tries to access a stack frame which has been suppressed by Cython. There is no way for Loguru to retrieve contextual information of the logged message, but there exists a workaround that will at least prevent your application to crash::
641
642 # Add this at the start of your file
643 logger = logger.opt(depth=-1)
644
645 Note that logged messages should be displayed correctly, but function name and other information will be incorrect. This issue is discussed in `GH#88`_.
646
647
648 Creating independent loggers with separate set of handlers
649 ----------------------------------------------------------
650
651 Loguru is fundamentally designed to be usable with exactly one global ``logger`` object dispatching logging messages to the configured handlers. In some circumstances, it may be useful to have specific messages logged to specific handlers.
652
653 For example, supposing you want to split your logs in two files based on an arbitrary identifier, you can achieve that by combining |bind| and ``filter``::
654
655 from loguru import logger
656
657 def task_A():
658 logger_a = logger.bind(task="A")
659 logger_a.info("Starting task A")
660 do_something()
661 logger_a.success("End of task A")
662
663 def task_B():
664 logger_b = logger.bind(task="B")
665 logger_b.info("Starting task B")
666 do_something_else()
667 logger_b.success("End of task B")
668
669 logger.add("file_A.log", filter=lambda record: record["extra"]["task"] == "A")
670 logger.add("file_B.log", filter=lambda record: record["extra"]["task"] == "B")
671
672 task_A()
673 task_B()
674
675 That way, ``"file_A.log"`` and ``"file_B.log"`` will only contains logs from respectively the ``task_A()`` and ``task_B()`` function.
676
677 Now, supposing that you have a lot of these tasks. It may be a bit cumbersome to configure every handlers like this. Most importantly, it may unnecessarily slow down your application as each log will need to be checked by the ``filter`` function of each handler. In such case, it is recommended to rely on the |copy.deepcopy| built-in method that will create an independent ``logger`` object. If you add a handler to a deep copied ``logger``, it will not be shared with others functions using the original ``logger``::
678
679 import copy
680 from loguru import logger
681
682 def task(task_id, logger):
683 logger.info("Starting task {}", task_id)
684 do_something(task_id)
685 logger.success("End of task {}", task_id)
686
687 logger.remove()
688
689 for task_id in ["A", "B", "C", "D", "E"]:
690 logger_ = copy.deepcopy(logger)
691 logger_.add("file_%s.log" % task_id)
692 task(task_id, logger_)
693
694 Note that you may encounter errors if you try to copy a ``logger`` to which non-picklable handlers have been added. For this reason, it is generally advised to remove all handlers before calling ``copy.deepcopy(logger)``.
695
696
697 Compatibility with ``multiprocessing`` using ``enqueue`` argument
698 -----------------------------------------------------------------
699
700 On Linux, thanks to |os.fork| there is no pitfall while using the ``logger`` inside another process started by the |multiprocessing| module. The child process will automatically inherit added handlers, the ``enqueue=True`` parameter is optional but is recommended as it would avoid concurrent access of your sink::
701
702 # Linux implementation
703 import multiprocessing
704 from loguru import logger
705
706 def my_process():
707 logger.info("Executing function in child process")
708 logger.complete()
709
710 if __name__ == "__main__":
711 logger.add("file.log", enqueue=True)
712
713 process = multiprocessing.Process(target=my_process)
714 process.start()
715 process.join()
716
717 logger.info("Done")
718
719 Things get a little more complicated on Windows. Indeed, this operating system does not support forking, so Python has to use an alternative method to create sub-processes called "spawning". This procedure requires the whole file where the child process is created to be reloaded from scratch. This does not interoperate very well with Loguru, causing handlers to be added twice without any synchronization or, on the contrary, not being added at all (depending on ``add()`` and ``remove()`` being called inside or outside the ``__main__`` branch). For this reason, the ``logger`` object need to be explicitly passed as an initializer argument of your child process::
720
721 # Windows implementation
722 import multiprocessing
723 from loguru import logger
724
725 def my_process(logger_):
726 logger_.info("Executing function in child process")
727 logger_.complete()
728
729 if __name__ == "__main__":
730 logger.remove() # Default "sys.stderr" sink is not picklable
731 logger.add("file.log", enqueue=True)
732
733 process = multiprocessing.Process(target=my_process, args=(logger, ))
734 process.start()
735 process.join()
736
737 logger.info("Done")
738
739 Windows requires the added sinks to be picklable or otherwise will raise an error while creating the child process. Many stream objects like standard output and file descriptors are not picklable. In such case, the ``enqueue=True`` argument is required as it will allow the child process to only inherit the queue object where logs are sent.
740
741 The |multiprocessing| library is also commonly used to start a pool of workers using for example |Pool.map| or |Pool.apply|. Again, it will work flawlessly on Linux, but it will require some tinkering on Windows. You will probably not be able to pass the ``logger`` as an argument for your worker functions because it needs to be picklable, but altough handlers added using ``enqueue=True`` are "inheritable", they are not "picklable". Instead, you will need to make use of the ``initializer`` and ``initargs`` parameters while creating the |Pool| object in a way allowing your workers to access the shared ``logger``. You can either assign it to a class attribute or override the global logger of your child processes:
742
743 .. code::
744
745 # workers_a.py
746 class Worker:
747
748 _logger = None
749
750 @staticmethod
751 def set_logger(logger_):
752 Worker._logger = logger_
753
754 def work(self, x):
755 self._logger.info("Square rooting {}", x)
756 return x**0.5
757
758
759 .. code::
760
761 # workers_b.py
762 from loguru import logger
763
764 def set_logger(logger_):
765 global logger
766 logger = logger_
767
768 def work(x):
769 logger.info("Square rooting {}", x)
770 return x**0.5
771
772
773 .. code::
774
775 # main.py
776 from multiprocessing import Pool
777 from loguru import logger
778 import workers_a
779 import workers_b
780
781 if __name__ == "__main__":
782 logger.remove()
783 logger.add("file.log", enqueue=True)
784
785 worker = workers_a.Worker()
786 with Pool(4, initializer=worker.set_logger, initargs=(logger, )) as pool:
787 resuts = pool.map(worker.work, [1, 10, 100])
788
789 with Pool(4, initializer=workers_b.set_logger, initargs=(logger, )) as pool:
790 results = pool.map(workers_b.work, [1, 10, 100])
791
792 logger.info("Done")
793
794 Independently of the operating system, note that the process in which a handler is added with ``enqueue=True`` is in charge of the queue internally used. This means that you should avoid to ``.remove()`` such handler from the parent process is any child is likely to continue using it. More importantly, note that a |Thread| is started internally to consume the queue. Therefore, it is recommended to call |complete| before leaving |Process| to make sure the queue is left in a stable state.
+0
-8
docs/resources.rst less more
0 Help & Guides
1 =============
2
3 .. toctree::
4
5 Introduction to Logging in Python <https://docs.python.org/3/howto/logging.html>
6 resources/migration.rst
7 resources/recipes.rst
1313
1414 __all__ = ["logger"]
1515
16 logger = _Logger(_Core(), None, 0, False, False, False, False, True, None, {})
16 logger = _Logger(
17 core=_Core(),
18 exception=None,
19 depth=0,
20 record=False,
21 lazy=False,
22 colors=False,
23 raw=False,
24 capture=True,
25 patcher=None,
26 extra={},
27 )
1728
1829 if _defaults.LOGURU_AUTOINIT and _sys.stderr:
1930 logger.add(_sys.stderr)
7272 - ``RecordException``: the ``record["exception"]`` with ``type``, ``value`` and ``traceback``
7373 attributes.
7474
75 If that is not enough, one can also use the |loguru-mypy|_ library developped by `@kornicameister`_.
76 Plugin can be installed seperately using::
75 If that is not enough, one can also use the |loguru-mypy|_ library developed by `@kornicameister`_.
76 Plugin can be installed separately using::
7777
7878 pip install loguru-mypy
7979
288288 reraise: bool = ...,
289289 onerror: Optional[Callable[[BaseException], None]] = ...,
290290 exclude: Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]] = ...,
291 default: Any = ...,
291292 message: str = ...
292293 ) -> Catcher: ...
293294 @overload
250250
251251 if ansi is None:
252252 raise ValueError(
253 'Tag "%s" does not corespond to any known ansi directive, '
253 'Tag "%s" does not correspond to any known ansi directive, '
254254 "make sure you did not misspelled it (or prepend '\\' to escape it)"
255255 % markup
256256 )
1111 def filter_by_level(record, level_per_module):
1212 name = record["name"]
1313
14 level = 0
15
16 if name in level_per_module:
17 level = level_per_module[name]
18 elif name is not None:
19 lookup = ""
20 if "" in level_per_module:
21 level = level_per_module[""]
22 for n in name.split("."):
23 lookup += n
24 if lookup in level_per_module:
25 level = level_per_module[lookup]
26 lookup += "."
27
28 if level is False:
29 return False
30
31 return record["level"].no >= level
14 while True:
15 level = level_per_module.get(name, None)
16 if level is False:
17 return False
18 if level is not None:
19 return record["level"].no >= level
20 if not name:
21 return True
22 index = name.rfind(".")
23 name = name[:index] if index != -1 else ""
00 import functools
11 import json
2 import multiprocessing
23 import os
3 import multiprocessing
44 from threading import Thread
55
66 from ._colorizer import Colorizer
188188 return
189189 self._queue.put(None)
190190 self._thread.join()
191 if hasattr(self._queue, "close"):
192 self._queue.close()
191193
192194 self._sink.stop()
193195
3434 lock.release()
3535
3636 os.register_at_fork(
37 before=acquire_locks, after_in_parent=release_locks, after_in_child=release_locks,
37 before=acquire_locks,
38 after_in_parent=release_locks,
39 after_in_child=release_locks,
3840 )
3941
4042 def create_logger_lock():
3333 .. |timedelta| replace:: :class:`datetime.timedelta`
3434 .. |open| replace:: :func:`open()`
3535 .. |logging| replace:: :mod:`logging`
36 .. |signal| replace:: :mod:`signal`
3637 .. |contextvars| replace:: :mod:`contextvars`
3738 .. |Thread.run| replace:: :meth:`Thread.run()<threading.Thread.run()>`
3839 .. |Exception| replace:: :class:`Exception`
6869 .. _@sdispater: https://github.com/sdispater
6970 .. _@Qix-: https://github.com/Qix-
7071 .. _Formatting directives: https://docs.python.org/3/library/string.html#format-string-syntax
72 .. _reentrant: https://en.wikipedia.org/wiki/Reentrancy_(computing)
7173 """
7274 import asyncio
7375 import builtins
344346 - A built-in |Handler| like ``logging.StreamHandler``. In such a case, the `Loguru` records
345347 are automatically converted to the structure expected by the |logging| module.
346348
347 Note that you should avoid using the ``logger`` inside any of your sinks as this would
348 result in infinite recursion or dead lock if the module's sink was not explicitly disabled.
349 Note that the logging functions are not `reentrant`_. This means you should avoid using
350 the ``logger`` inside any of your sinks or from within |signal| handlers. Otherwise, you
351 may face deadlock if the module's sink was not explicitly disabled.
349352
350353 .. _message:
351354
864867 if levelno_ < 0:
865868 raise ValueError(
866869 "The filter dict contains a module '%s' associated to an invalid level, "
867 "it should be a positive interger, not: '%d'" % (module, levelno_)
870 "it should be a positive integer, not: '%d'" % (module, levelno_)
868871 )
869872 level_per_module[module] = levelno_
870873 filter_func = functools.partial(
0 Metadata-Version: 2.1
1 Name: loguru
2 Version: 0.5.3
3 Summary: Python logging made (stupidly) simple
4 Home-page: https://github.com/Delgan/loguru
5 Author: Delgan
6 Author-email: delgan.py@gmail.com
7 License: MIT license
8 Download-URL: https://github.com/Delgan/loguru/archive/0.5.3.tar.gz
9 Project-URL: Changelog, https://github.com/Delgan/loguru/blob/master/CHANGELOG.rst
10 Project-URL: Documentation, https://loguru.readthedocs.io/en/stable/index.html
11 Description: .. raw:: html
12
13 <p align="center">
14 <a href="#readme">
15 <img alt="Loguru logo" src="https://raw.githubusercontent.com/Delgan/loguru/master/docs/_static/img/logo.png">
16 <!-- Logo credits: Sambeet from Pixaday -->
17 <!-- Logo fonts: Comfortaa + Raleway -->
18 </a>
19 </p>
20 <p align="center">
21 <a href="https://pypi.python.org/pypi/loguru"><img alt="Pypi version" src="https://img.shields.io/pypi/v/loguru.svg"></a>
22 <a href="https://pypi.python.org/pypi/loguru"><img alt="Python versions" src="https://img.shields.io/badge/python-3.5%2B%20%7C%20PyPy-blue.svg"></a>
23 <a href="https://loguru.readthedocs.io/en/stable/index.html"><img alt="Documentation" src="https://img.shields.io/readthedocs/loguru.svg"></a>
24 <a href="https://travis-ci.com/Delgan/loguru"><img alt="Build status" src="https://img.shields.io/travis/Delgan/loguru/master.svg"></a>
25 <a href="https://codecov.io/gh/delgan/loguru/branch/master"><img alt="Coverage" src="https://img.shields.io/codecov/c/github/delgan/loguru/master.svg"></a>
26 <a href="https://www.codacy.com/app/delgan-py/loguru/dashboard"><img alt="Code quality" src="https://img.shields.io/codacy/grade/4d97edb1bb734a0d9a684a700a84f555.svg"></a>
27 <a href="https://github.com/Delgan/loguru/blob/master/LICENSE"><img alt="License" src="https://img.shields.io/github/license/delgan/loguru.svg"></a>
28 </p>
29 <p align="center">
30 <a href="#readme">
31 <img alt="Loguru logo" src="https://raw.githubusercontent.com/Delgan/loguru/master/docs/_static/img/demo.gif">
32 </a>
33 </p>
34
35 =========
36
37 **Loguru** is a library which aims to bring enjoyable logging in Python.
38
39 Did you ever feel lazy about configuring a logger and used ``print()`` instead?... I did, yet logging is fundamental to every application and eases the process of debugging. Using **Loguru** you have no excuse not to use logging from the start, this is as simple as ``from loguru import logger``.
40
41 Also, this library is intended to make Python logging less painful by adding a bunch of useful functionalities that solve caveats of the standard loggers. Using logs in your application should be an automatism, **Loguru** tries to make it both pleasant and powerful.
42
43
44 .. end-of-readme-intro
45
46 Installation
47 ------------
48
49 ::
50
51 pip install loguru
52
53
54 Features
55 --------
56
57 * `Ready to use out of the box without boilerplate`_
58 * `No Handler, no Formatter, no Filter: one function to rule them all`_
59 * `Easier file logging with rotation / retention / compression`_
60 * `Modern string formatting using braces style`_
61 * `Exceptions catching within threads or main`_
62 * `Pretty logging with colors`_
63 * `Asynchronous, Thread-safe, Multiprocess-safe`_
64 * `Fully descriptive exceptions`_
65 * `Structured logging as needed`_
66 * `Lazy evaluation of expensive functions`_
67 * `Customizable levels`_
68 * `Better datetime handling`_
69 * `Suitable for scripts and libraries`_
70 * `Entirely compatible with standard logging`_
71 * `Personalizable defaults through environment variables`_
72 * `Convenient parser`_
73 * `Exhaustive notifier`_
74 * |strike| `10x faster than built-in logging`_ |/strike|
75
76 Take the tour
77 -------------
78
79 .. highlight:: python3
80
81 .. |logger| replace:: ``logger``
82 .. _logger: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger
83
84 .. |add| replace:: ``add()``
85 .. _add: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add
86
87 .. |remove| replace:: ``remove()``
88 .. _remove: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.remove
89
90 .. |complete| replace:: ``complete()``
91 .. _complete: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.complete
92
93 .. |catch| replace:: ``catch()``
94 .. _catch: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.catch
95
96 .. |bind| replace:: ``bind()``
97 .. _bind: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.bind
98
99 .. |contextualize| replace:: ``contextualize()``
100 .. _contextualize: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.contextualize
101
102 .. |patch| replace:: ``patch()``
103 .. _patch: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.patch
104
105 .. |opt| replace:: ``opt()``
106 .. _opt: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.opt
107
108 .. |trace| replace:: ``trace()``
109 .. _trace: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.trace
110
111 .. |success| replace:: ``success()``
112 .. _success: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.success
113
114 .. |level| replace:: ``level()``
115 .. _level: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.level
116
117 .. |configure| replace:: ``configure()``
118 .. _configure: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.configure
119
120 .. |disable| replace:: ``disable()``
121 .. _disable: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.disable
122
123 .. |enable| replace:: ``enable()``
124 .. _enable: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.enable
125
126 .. |parse| replace:: ``parse()``
127 .. _parse: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.parse
128
129 .. _sinks: https://loguru.readthedocs.io/en/stable/api/logger.html#sink
130 .. _record dict: https://loguru.readthedocs.io/en/stable/api/logger.html#record
131 .. _log messages: https://loguru.readthedocs.io/en/stable/api/logger.html#message
132 .. _easily configurable: https://loguru.readthedocs.io/en/stable/api/logger.html#file
133 .. _markup tags: https://loguru.readthedocs.io/en/stable/api/logger.html#color
134 .. _fixes it: https://loguru.readthedocs.io/en/stable/api/logger.html#time
135 .. _No problem: https://loguru.readthedocs.io/en/stable/api/logger.html#env
136 .. _logging levels: https://loguru.readthedocs.io/en/stable/api/logger.html#levels
137
138 .. |better_exceptions| replace:: ``better_exceptions``
139 .. _better_exceptions: https://github.com/Qix-/better-exceptions
140
141 .. |notifiers| replace:: ``notifiers``
142 .. _notifiers: https://github.com/notifiers/notifiers
143
144
145 Ready to use out of the box without boilerplate
146 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
147
148 The main concept of `Loguru` is that **there is one and only one** |logger|_.
149
150 For convenience, it is pre-configured and outputs to ``stderr`` to begin with (but that's entirely configurable).
151
152 ::
153
154 from loguru import logger
155
156 logger.debug("That's it, beautiful and simple logging!")
157
158 The |logger|_ is just an interface which dispatches log messages to configured handlers. Simple, right?
159
160
161 No Handler, no Formatter, no Filter: one function to rule them all
162 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
163
164 How to add a handler? How to set up logs formatting? How to filter messages? How to set level?
165
166 One answer: the |add|_ function.
167
168 ::
169
170 logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO")
171
172 This function should be used to register sinks_ which are responsible for managing `log messages`_ contextualized with a `record dict`_. A sink can take many forms: a simple function, a string path, a file-like object, a coroutine function or a built-in Handler.
173
174 Note that you may also |remove|_ a previously added handler by using the identifier returned while adding it. This is particularly useful if you want to supersede the default ``stderr`` handler: just call ``logger.remove()`` to make a fresh start.
175
176
177 Easier file logging with rotation / retention / compression
178 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
179
180 If you want to send logged messages to a file, you just have to use a string path as the sink. It can be automatically timed too for convenience::
181
182 logger.add("file_{time}.log")
183
184 It is also `easily configurable`_ if you need rotating logger, if you want to remove older logs, or if you wish to compress your files at closure.
185
186 ::
187
188 logger.add("file_1.log", rotation="500 MB") # Automatically rotate too big file
189 logger.add("file_2.log", rotation="12:00") # New file is created each day at noon
190 logger.add("file_3.log", rotation="1 week") # Once the file is too old, it's rotated
191
192 logger.add("file_X.log", retention="10 days") # Cleanup after some time
193
194 logger.add("file_Y.log", compression="zip") # Save some loved space
195
196
197 Modern string formatting using braces style
198 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
199
200 `Loguru` favors the much more elegant and powerful ``{}`` formatting over ``%``, logging functions are actually equivalent to ``str.format()``.
201
202 ::
203
204 logger.info("If you're using Python {}, prefer {feature} of course!", 3.6, feature="f-strings")
205
206
207 Exceptions catching within threads or main
208 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
209
210 Have you ever seen your program crashing unexpectedly without seeing anything in the log file? Did you ever noticed that exceptions occurring in threads were not logged? This can be solved using the |catch|_ decorator / context manager which ensures that any error is correctly propagated to the |logger|_.
211
212 ::
213
214 @logger.catch
215 def my_function(x, y, z):
216 # An error? It's caught anyway!
217 return 1 / (x + y + z)
218
219
220 Pretty logging with colors
221 ^^^^^^^^^^^^^^^^^^^^^^^^^^
222
223 `Loguru` automatically adds colors to your logs if your terminal is compatible. You can define your favorite style by using `markup tags`_ in the sink format.
224
225 ::
226
227 logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")
228
229
230 Asynchronous, Thread-safe, Multiprocess-safe
231 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
232
233 All sinks added to the |logger|_ are thread-safe by default. They are not multiprocess-safe, but you can ``enqueue`` the messages to ensure logs integrity. This same argument can also be used if you want async logging.
234
235 ::
236
237 logger.add("somefile.log", enqueue=True)
238
239 Coroutine functions used as sinks are also supported and should be awaited with |complete|_.
240
241
242 Fully descriptive exceptions
243 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
244
245 Logging exceptions that occur in your code is important to track bugs, but it's quite useless if you don't know why it failed. `Loguru` helps you identify problems by allowing the entire stack trace to be displayed, including values of variables (thanks |better_exceptions|_ for this!).
246
247 The code::
248
249 logger.add("out.log", backtrace=True, diagnose=True) # Caution, may leak sensitive data in prod
250
251 def func(a, b):
252 return a / b
253
254 def nested(c):
255 try:
256 func(5, c)
257 except ZeroDivisionError:
258 logger.exception("What?!")
259
260 nested(0)
261
262 Would result in:
263
264 .. code-block:: none
265
266 2018-07-17 01:38:43.975 | ERROR | __main__:nested:10 - What?!
267 Traceback (most recent call last):
268
269 File "test.py", line 12, in <module>
270 nested(0)
271 └ <function nested at 0x7f5c755322f0>
272
273 > File "test.py", line 8, in nested
274 func(5, c)
275 │ └ 0
276 └ <function func at 0x7f5c79fc2e18>
277
278 File "test.py", line 4, in func
279 return a / b
280 │ └ 0
281 └ 5
282
283 ZeroDivisionError: division by zero
284
285
286 Structured logging as needed
287 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
288
289 Want your logs to be serialized for easier parsing or to pass them around? Using the ``serialize`` argument, each log message will be converted to a JSON string before being sent to the configured sink.
290
291 ::
292
293 logger.add(custom_sink_function, serialize=True)
294
295 Using |bind|_ you can contextualize your logger messages by modifying the `extra` record attribute.
296
297 ::
298
299 logger.add("file.log", format="{extra[ip]} {extra[user]} {message}")
300 context_logger = logger.bind(ip="192.168.0.1", user="someone")
301 context_logger.info("Contextualize your logger easily")
302 context_logger.bind(user="someone_else").info("Inline binding of extra attribute")
303 context_logger.info("Use kwargs to add context during formatting: {user}", user="anybody")
304
305 It is possible to modify a context-local state temporarily with |contextualize|_:
306
307 ::
308
309 with logger.contextualize(task=task_id):
310 do_something()
311 logger.info("End of task")
312
313 You can also have more fine-grained control over your logs by combining |bind|_ and ``filter``:
314
315 ::
316
317 logger.add("special.log", filter=lambda record: "special" in record["extra"])
318 logger.debug("This message is not logged to the file")
319 logger.bind(special=True).info("This message, though, is logged to the file!")
320
321 Finally, the |patch|_ method allows dynamic values to be attached to the record dict of each new message:
322
323 ::
324
325 logger.add(sys.stderr, format="{extra[utc]} {message}")
326 logger = logger.patch(lambda record: record["extra"].update(utc=datetime.utcnow()))
327
328
329 Lazy evaluation of expensive functions
330 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
331
332 Sometime you would like to log verbose information without performance penalty in production, you can use the |opt|_ method to achieve this.
333
334 ::
335
336 logger.opt(lazy=True).debug("If sink level <= DEBUG: {x}", x=lambda: expensive_function(2**64))
337
338 # By the way, "opt()" serves many usages
339 logger.opt(exception=True).info("Error stacktrace added to the log message (tuple accepted too)")
340 logger.opt(colors=True).info("Per message <blue>colors</blue>")
341 logger.opt(record=True).info("Display values from the record (eg. {record[thread]})")
342 logger.opt(raw=True).info("Bypass sink formatting\n")
343 logger.opt(depth=1).info("Use parent stack context (useful within wrapped functions)")
344 logger.opt(capture=False).info("Keyword arguments not added to {dest} dict", dest="extra")
345
346
347 Customizable levels
348 ^^^^^^^^^^^^^^^^^^^
349
350 `Loguru` comes with all standard `logging levels`_ to which |trace|_ and |success|_ are added. Do you need more? Then, just create it by using the |level|_ function.
351
352 ::
353
354 new_level = logger.level("SNAKY", no=38, color="<yellow>", icon="🐍")
355
356 logger.log("SNAKY", "Here we go!")
357
358
359 Better datetime handling
360 ^^^^^^^^^^^^^^^^^^^^^^^^
361
362 The standard logging is bloated with arguments like ``datefmt`` or ``msecs``, ``%(asctime)s`` and ``%(created)s``, naive datetimes without timezone information, not intuitive formatting, etc. `Loguru` `fixes it`_:
363
364 ::
365
366 logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}")
367
368
369 Suitable for scripts and libraries
370 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
371
372 Using the logger in your scripts is easy, and you can |configure|_ it at start. To use `Loguru` from inside a library, remember to never call |add|_ but use |disable|_ instead so logging functions become no-op. If a developer wishes to see your library's logs, he can |enable|_ it again.
373
374 ::
375
376 # For scripts
377 config = {
378 "handlers": [
379 {"sink": sys.stdout, "format": "{time} - {message}"},
380 {"sink": "file.log", "serialize": True},
381 ],
382 "extra": {"user": "someone"}
383 }
384 logger.configure(**config)
385
386 # For libraries
387 logger.disable("my_library")
388 logger.info("No matter added sinks, this message is not displayed")
389 logger.enable("my_library")
390 logger.info("This message however is propagated to the sinks")
391
392
393 Entirely compatible with standard logging
394 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
395
396 Wish to use built-in logging ``Handler`` as a `Loguru` sink?
397
398 ::
399
400 handler = logging.handlers.SysLogHandler(address=('localhost', 514))
401 logger.add(handler)
402
403 Need to propagate `Loguru` messages to standard `logging`?
404
405 ::
406
407 class PropagateHandler(logging.Handler):
408 def emit(self, record):
409 logging.getLogger(record.name).handle(record)
410
411 logger.add(PropagateHandler(), format="{message}")
412
413 Want to intercept standard `logging` messages toward your `Loguru` sinks?
414
415 ::
416
417 class InterceptHandler(logging.Handler):
418 def emit(self, record):
419 # Get corresponding Loguru level if it exists
420 try:
421 level = logger.level(record.levelname).name
422 except ValueError:
423 level = record.levelno
424
425 # Find caller from where originated the logged message
426 frame, depth = logging.currentframe(), 2
427 while frame.f_code.co_filename == logging.__file__:
428 frame = frame.f_back
429 depth += 1
430
431 logger.opt(depth=depth, exception=record.exc_info).log(level, record.getMessage())
432
433 logging.basicConfig(handlers=[InterceptHandler()], level=0)
434
435
436 Personalizable defaults through environment variables
437 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
438
439 Don't like the default logger formatting? Would prefer another ``DEBUG`` color? `No problem`_::
440
441 # Linux / OSX
442 export LOGURU_FORMAT="{time} | <lvl>{message}</lvl>"
443
444 # Windows
445 setx LOGURU_DEBUG_COLOR "<green>"
446
447
448 Convenient parser
449 ^^^^^^^^^^^^^^^^^
450
451 It is often useful to extract specific information from generated logs, this is why `Loguru` provides a |parse|_ method which helps to deal with logs and regexes.
452
453 ::
454
455 pattern = r"(?P<time>.*) - (?P<level>[0-9]+) - (?P<message>.*)" # Regex with named groups
456 caster_dict = dict(time=dateutil.parser.parse, level=int) # Transform matching groups
457
458 for groups in logger.parse("file.log", pattern, cast=caster_dict):
459 print("Parsed:", groups)
460 # {"level": 30, "message": "Log example", "time": datetime(2018, 12, 09, 11, 23, 55)}
461
462
463 Exhaustive notifier
464 ^^^^^^^^^^^^^^^^^^^
465
466 `Loguru` can easily be combined with the great |notifiers|_ library (must be installed separately) to receive an e-mail when your program fail unexpectedly or to send many other kind of notifications.
467
468 ::
469
470 import notifiers
471
472 params = {
473 "username": "you@gmail.com",
474 "password": "abc123",
475 "to": "dest@gmail.com"
476 }
477
478 # Send a single notification
479 notifier = notifiers.get_notifier("gmail")
480 notifier.notify(message="The application is running!", **params)
481
482 # Be alerted on each error message
483 from notifiers.logging import NotificationHandler
484
485 handler = NotificationHandler("gmail", defaults=params)
486 logger.add(handler, level="ERROR")
487
488
489 |strike|
490
491 10x faster than built-in logging
492 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
493
494 |/strike|
495
496 Although logging impact on performances is in most cases negligible, a zero-cost logger would allow to use it anywhere without much concern. In an upcoming release, Loguru's critical functions will be implemented in C for maximum speed.
497
498
499 .. |strike| raw:: html
500
501 <strike>
502
503 .. |/strike| raw:: html
504
505 </strike>
506
507 .. end-of-readme-usage
508
509
510 Documentation
511 -------------
512
513 * `API Reference <https://loguru.readthedocs.io/en/stable/api/logger.html>`_
514 * `Help & Guides <https://loguru.readthedocs.io/en/stable/resources.html>`_
515 * `Type hints <https://loguru.readthedocs.io/en/stable/api/type_hints.html>`_
516 * `Contributing <https://loguru.readthedocs.io/en/stable/project/contributing.html>`_
517 * `License <https://loguru.readthedocs.io/en/stable/project/license.html>`_
518 * `Changelog <https://loguru.readthedocs.io/en/stable/project/changelog.html>`_
519
520 Keywords: loguru,logging,logger,log
521 Platform: UNKNOWN
522 Classifier: Development Status :: 5 - Production/Stable
523 Classifier: Topic :: System :: Logging
524 Classifier: Intended Audience :: Developers
525 Classifier: Natural Language :: English
526 Classifier: License :: OSI Approved :: MIT License
527 Classifier: Operating System :: OS Independent
528 Classifier: Programming Language :: Python
529 Classifier: Programming Language :: Python :: 3
530 Classifier: Programming Language :: Python :: 3.5
531 Classifier: Programming Language :: Python :: 3.6
532 Classifier: Programming Language :: Python :: 3.7
533 Classifier: Programming Language :: Python :: 3.8
534 Classifier: Programming Language :: Python :: 3.9
535 Classifier: Programming Language :: Python :: 3 :: Only
536 Classifier: Programming Language :: Python :: Implementation :: PyPy
537 Classifier: Programming Language :: Python :: Implementation :: CPython
538 Requires-Python: >=3.5
539 Description-Content-Type: text/x-rst
540 Provides-Extra: dev
0 LICENSE
1 MANIFEST.in
2 README.rst
3 setup.py
4 loguru/__init__.py
5 loguru/__init__.pyi
6 loguru/_better_exceptions.py
7 loguru/_colorama.py
8 loguru/_colorizer.py
9 loguru/_ctime_functions.py
10 loguru/_datetime.py
11 loguru/_defaults.py
12 loguru/_error_interceptor.py
13 loguru/_file_sink.py
14 loguru/_filters.py
15 loguru/_get_frame.py
16 loguru/_handler.py
17 loguru/_locks_machinery.py
18 loguru/_logger.py
19 loguru/_recattrs.py
20 loguru/_simple_sinks.py
21 loguru/_string_parsers.py
22 loguru/py.typed
23 loguru.egg-info/PKG-INFO
24 loguru.egg-info/SOURCES.txt
25 loguru.egg-info/dependency_links.txt
26 loguru.egg-info/requires.txt
27 loguru.egg-info/top_level.txt
28 tests/__init__.py
29 tests/conftest.py
30 tests/test_activation.py
31 tests/test_add_option_backtrace.py
32 tests/test_add_option_catch.py
33 tests/test_add_option_colorize.py
34 tests/test_add_option_diagnose.py
35 tests/test_add_option_enqueue.py
36 tests/test_add_option_filter.py
37 tests/test_add_option_format.py
38 tests/test_add_option_kwargs.py
39 tests/test_add_option_level.py
40 tests/test_add_option_serialize.py
41 tests/test_add_sinks.py
42 tests/test_ansimarkup_basic.py
43 tests/test_ansimarkup_extended.py
44 tests/test_bind.py
45 tests/test_configure.py
46 tests/test_contextualize.py
47 tests/test_coroutine_sink.py
48 tests/test_datetime.py
49 tests/test_deepcopy.py
50 tests/test_defaults.py
51 tests/test_exceptions_catch.py
52 tests/test_exceptions_formatting.py
53 tests/test_filesink_compression.py
54 tests/test_filesink_delay.py
55 tests/test_filesink_retention.py
56 tests/test_filesink_rotation.py
57 tests/test_formatting.py
58 tests/test_get_frame.py
59 tests/test_interception.py
60 tests/test_levels.py
61 tests/test_multiprocessing.py
62 tests/test_opt.py
63 tests/test_parse.py
64 tests/test_patch.py
65 tests/test_pickling.py
66 tests/test_propagation.py
67 tests/test_recattr.py
68 tests/test_remove.py
69 tests/test_repr.py
70 tests/test_standard_handler.py
71 tests/test_threading.py
72 tests/exceptions/output/backtrace/chained_expression_direct.txt
73 tests/exceptions/output/backtrace/chained_expression_indirect.txt
74 tests/exceptions/output/backtrace/chaining_first.txt
75 tests/exceptions/output/backtrace/chaining_second.txt
76 tests/exceptions/output/backtrace/chaining_third.txt
77 tests/exceptions/output/backtrace/enqueue.txt
78 tests/exceptions/output/backtrace/enqueue_with_others_handlers.txt
79 tests/exceptions/output/backtrace/frame_values_backward.txt
80 tests/exceptions/output/backtrace/frame_values_forward.txt
81 tests/exceptions/output/backtrace/function.txt
82 tests/exceptions/output/backtrace/head_recursion.txt
83 tests/exceptions/output/backtrace/missing_attributes_traceback_objects.txt
84 tests/exceptions/output/backtrace/nested.txt
85 tests/exceptions/output/backtrace/nested_chained_catch_up.txt
86 tests/exceptions/output/backtrace/nested_decorator_catch_up.txt
87 tests/exceptions/output/backtrace/nested_explicit_catch_up.txt
88 tests/exceptions/output/backtrace/nested_wrapping.txt
89 tests/exceptions/output/backtrace/no_tb.txt
90 tests/exceptions/output/backtrace/not_enough_arguments.txt
91 tests/exceptions/output/backtrace/raising_recursion.txt
92 tests/exceptions/output/backtrace/suppressed_expression_direct.txt
93 tests/exceptions/output/backtrace/suppressed_expression_indirect.txt
94 tests/exceptions/output/backtrace/tail_recursion.txt
95 tests/exceptions/output/backtrace/too_many_arguments.txt
96 tests/exceptions/output/diagnose/assertion_error.txt
97 tests/exceptions/output/diagnose/assertion_error_custom.txt
98 tests/exceptions/output/diagnose/assertion_error_in_string.txt
99 tests/exceptions/output/diagnose/attributes.txt
100 tests/exceptions/output/diagnose/chained_both.txt
101 tests/exceptions/output/diagnose/encoding.txt
102 tests/exceptions/output/diagnose/global_variable.txt
103 tests/exceptions/output/diagnose/indentation_error.txt
104 tests/exceptions/output/diagnose/keyword_argument.txt
105 tests/exceptions/output/diagnose/multilines_repr.txt
106 tests/exceptions/output/diagnose/no_error_message.txt
107 tests/exceptions/output/diagnose/parenthesis.txt
108 tests/exceptions/output/diagnose/source_multilines.txt
109 tests/exceptions/output/diagnose/source_strings.txt
110 tests/exceptions/output/diagnose/syntax_error.txt
111 tests/exceptions/output/diagnose/syntax_highlighting.txt
112 tests/exceptions/output/diagnose/truncating.txt
113 tests/exceptions/output/diagnose/unprintable_object.txt
114 tests/exceptions/output/others/assertionerror_without_traceback.txt
115 tests/exceptions/output/others/catch_as_context_manager.txt
116 tests/exceptions/output/others/catch_as_decorator_with_parentheses.txt
117 tests/exceptions/output/others/catch_as_decorator_without_parentheses.txt
118 tests/exceptions/output/others/catch_as_function.txt
119 tests/exceptions/output/others/catch_message.txt
120 tests/exceptions/output/others/exception_formatting_coroutine.txt
121 tests/exceptions/output/others/exception_formatting_function.txt
122 tests/exceptions/output/others/exception_formatting_generator.txt
123 tests/exceptions/output/others/exception_in_property.txt
124 tests/exceptions/output/others/handler_formatting_with_context_manager.txt
125 tests/exceptions/output/others/handler_formatting_with_decorator.txt
126 tests/exceptions/output/others/level_name.txt
127 tests/exceptions/output/others/level_number.txt
128 tests/exceptions/output/others/message_formatting_with_context_manager.txt
129 tests/exceptions/output/others/message_formatting_with_decorator.txt
130 tests/exceptions/output/others/nested_with_reraise.txt
131 tests/exceptions/output/others/syntaxerror_without_traceback.txt
132 tests/exceptions/output/others/sys_tracebacklimit.txt
133 tests/exceptions/output/others/sys_tracebacklimit_negative.txt
134 tests/exceptions/output/others/sys_tracebacklimit_none.txt
135 tests/exceptions/output/others/sys_tracebacklimit_unset.txt
136 tests/exceptions/output/others/zerodivisionerror_without_traceback.txt
137 tests/exceptions/output/ownership/assertion_from_lib.txt
138 tests/exceptions/output/ownership/assertion_from_local.txt
139 tests/exceptions/output/ownership/callback.txt
140 tests/exceptions/output/ownership/catch_decorator.txt
141 tests/exceptions/output/ownership/catch_decorator_from_lib.txt
142 tests/exceptions/output/ownership/decorated_callback.txt
143 tests/exceptions/output/ownership/direct.txt
144 tests/exceptions/output/ownership/indirect.txt
145 tests/exceptions/output/ownership/string_lib.txt
146 tests/exceptions/output/ownership/string_source.txt
147 tests/exceptions/output/ownership/syntaxerror.txt
148 tests/exceptions/source/backtrace/chained_expression_direct.py
149 tests/exceptions/source/backtrace/chained_expression_indirect.py
150 tests/exceptions/source/backtrace/chaining_first.py
151 tests/exceptions/source/backtrace/chaining_second.py
152 tests/exceptions/source/backtrace/chaining_third.py
153 tests/exceptions/source/backtrace/enqueue.py
154 tests/exceptions/source/backtrace/enqueue_with_others_handlers.py
155 tests/exceptions/source/backtrace/frame_values_backward.py
156 tests/exceptions/source/backtrace/frame_values_forward.py
157 tests/exceptions/source/backtrace/function.py
158 tests/exceptions/source/backtrace/head_recursion.py
159 tests/exceptions/source/backtrace/missing_attributes_traceback_objects.py
160 tests/exceptions/source/backtrace/nested.py
161 tests/exceptions/source/backtrace/nested_chained_catch_up.py
162 tests/exceptions/source/backtrace/nested_decorator_catch_up.py
163 tests/exceptions/source/backtrace/nested_explicit_catch_up.py
164 tests/exceptions/source/backtrace/nested_wrapping.py
165 tests/exceptions/source/backtrace/no_tb.py
166 tests/exceptions/source/backtrace/not_enough_arguments.py
167 tests/exceptions/source/backtrace/raising_recursion.py
168 tests/exceptions/source/backtrace/suppressed_expression_direct.py
169 tests/exceptions/source/backtrace/suppressed_expression_indirect.py
170 tests/exceptions/source/backtrace/tail_recursion.py
171 tests/exceptions/source/backtrace/too_many_arguments.py
172 tests/exceptions/source/diagnose/assertion_error.py
173 tests/exceptions/source/diagnose/assertion_error_custom.py
174 tests/exceptions/source/diagnose/assertion_error_in_string.py
175 tests/exceptions/source/diagnose/attributes.py
176 tests/exceptions/source/diagnose/chained_both.py
177 tests/exceptions/source/diagnose/encoding.py
178 tests/exceptions/source/diagnose/global_variable.py
179 tests/exceptions/source/diagnose/indentation_error.py
180 tests/exceptions/source/diagnose/keyword_argument.py
181 tests/exceptions/source/diagnose/multilines_repr.py
182 tests/exceptions/source/diagnose/no_error_message.py
183 tests/exceptions/source/diagnose/parenthesis.py
184 tests/exceptions/source/diagnose/source_multilines.py
185 tests/exceptions/source/diagnose/source_strings.py
186 tests/exceptions/source/diagnose/syntax_error.py
187 tests/exceptions/source/diagnose/syntax_highlighting.py
188 tests/exceptions/source/diagnose/truncating.py
189 tests/exceptions/source/diagnose/unprintable_object.py
190 tests/exceptions/source/others/assertionerror_without_traceback.py
191 tests/exceptions/source/others/catch_as_context_manager.py
192 tests/exceptions/source/others/catch_as_decorator_with_parentheses.py
193 tests/exceptions/source/others/catch_as_decorator_without_parentheses.py
194 tests/exceptions/source/others/catch_as_function.py
195 tests/exceptions/source/others/catch_message.py
196 tests/exceptions/source/others/exception_formatting_coroutine.py
197 tests/exceptions/source/others/exception_formatting_function.py
198 tests/exceptions/source/others/exception_formatting_generator.py
199 tests/exceptions/source/others/exception_in_property.py
200 tests/exceptions/source/others/handler_formatting_with_context_manager.py
201 tests/exceptions/source/others/handler_formatting_with_decorator.py
202 tests/exceptions/source/others/level_name.py
203 tests/exceptions/source/others/level_number.py
204 tests/exceptions/source/others/message_formatting_with_context_manager.py
205 tests/exceptions/source/others/message_formatting_with_decorator.py
206 tests/exceptions/source/others/nested_with_reraise.py
207 tests/exceptions/source/others/syntaxerror_without_traceback.py
208 tests/exceptions/source/others/sys_tracebacklimit.py
209 tests/exceptions/source/others/sys_tracebacklimit_negative.py
210 tests/exceptions/source/others/sys_tracebacklimit_none.py
211 tests/exceptions/source/others/sys_tracebacklimit_unset.py
212 tests/exceptions/source/others/zerodivisionerror_without_traceback.py
213 tests/exceptions/source/ownership/_init.py
214 tests/exceptions/source/ownership/assertion_from_lib.py
215 tests/exceptions/source/ownership/assertion_from_local.py
216 tests/exceptions/source/ownership/callback.py
217 tests/exceptions/source/ownership/catch_decorator.py
218 tests/exceptions/source/ownership/catch_decorator_from_lib.py
219 tests/exceptions/source/ownership/decorated_callback.py
220 tests/exceptions/source/ownership/direct.py
221 tests/exceptions/source/ownership/indirect.py
222 tests/exceptions/source/ownership/string_lib.py
223 tests/exceptions/source/ownership/string_source.py
224 tests/exceptions/source/ownership/syntaxerror.py
225 tests/exceptions/source/ownership/usersite/somelib/__init__.py
0
1 [:python_version < "3.7"]
2 aiocontextvars>=0.2.0
3
4 [:sys_platform == "win32"]
5 colorama>=0.3.4
6 win32-setctime>=1.0.0
7
8 [dev]
9 Sphinx>=2.2.1
10 codecov>=2.0.15
11 colorama>=0.3.4
12 flake8>=3.7.7
13 pytest-cov>=2.7.1
14 pytest>=4.6.2
15 sphinx-rtd-theme>=0.4.3
16 tox-travis>=0.12
17 tox>=3.9.0
18
19 [dev:python_version >= "3.6"]
20 black>=19.10b0
21 isort>=5.1.1
22 sphinx-autobuild>=0.7.1
0 [egg_info]
1 tag_build =
2 tag_date = 0
3
0 import os
10 import re
21
32 try:
4342 "Programming Language :: Python :: 3.6",
4443 "Programming Language :: Python :: 3.7",
4544 "Programming Language :: Python :: 3.8",
45 "Programming Language :: Python :: 3.9",
4646 "Programming Language :: Python :: 3 :: Only",
4747 "Programming Language :: Python :: Implementation :: PyPy",
4848 "Programming Language :: Python :: Implementation :: CPython",
6464 "pytest>=4.6.2",
6565 "pytest-cov>=2.7.1",
6666 "Sphinx>=2.2.1",
67 "sphinx-autobuild>=0.7.1",
67 "sphinx-autobuild>=0.7.1 ; python_version>='3.6'",
6868 "sphinx-rtd-theme>=0.4.3",
6969 ]
7070 },
00 import asyncio
11 import contextlib
2 import logging
3 import os
4 import sys
5 import threading
6 import time
7 import traceback
8 import warnings
9
10 import pytest
11
212 import loguru
3 import logging
4 import itertools
5 import pytest
6 import os
7 import subprocess
8 import sys
9 import time
10 import warnings
1113
1214 if sys.version_info < (3, 5, 3):
1315
4143 return parser.strip(tokens)
4244 else:
4345 return parser.colorize(tokens, "")
46
47
48 @contextlib.contextmanager
49 def default_threading_excepthook():
50 if not hasattr(threading, "excepthook"):
51 yield
52 return
53
54 # Pytest added "PytestUnhandledThreadExceptionWarning", we need to
55 # remove it temporarily for somes tests checking exceptions in threads.
56
57 def excepthook(args):
58 print("Exception in thread:", file=sys.stderr, flush=True)
59 traceback.print_exception(
60 args.exc_type, args.exc_value, args.exc_traceback, file=sys.stderr
61 )
62
63 old_excepthook = threading.excepthook
64 threading.excepthook = excepthook
65 yield
66 threading.excepthook = old_excepthook
4467
4568
4669 @pytest.fixture(scope="session", autouse=True)
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 11, in a_decorated
3 1 / 0
4 ZeroDivisionError: division by zero
5
6 During handling of the above exception, another exception occurred:
7
8 Traceback (most recent call last):
9 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 39, in <module>
10 b_decorator()
11 > File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 24, in b_decorator
12 a_decorated()
13 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 13, in a_decorated
14 raise ValueError("NOK")
15 ValueError: NOK
16
17 Traceback (most recent call last):
18 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 18, in a_not_decorated
2 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 12, in a_decorated
193 1 / 0
204 ZeroDivisionError: division by zero
215
237
248 Traceback (most recent call last):
259 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 40, in <module>
26 b_context_manager()
27 > File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 29, in b_context_manager
28 a_not_decorated()
29 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 20, in a_not_decorated
10 b_decorator()
11 > File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 25, in b_decorator
12 a_decorated()
13 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 14, in a_decorated
3014 raise ValueError("NOK")
3115 ValueError: NOK
3216
3317 Traceback (most recent call last):
34 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 18, in a_not_decorated
18 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 19, in a_not_decorated
3519 1 / 0
3620 ZeroDivisionError: division by zero
3721
3923
4024 Traceback (most recent call last):
4125 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 41, in <module>
42 b_explicit()
43 > File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 34, in b_explicit
26 b_context_manager()
27 > File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 30, in b_context_manager
4428 a_not_decorated()
45 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 20, in a_not_decorated
29 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 21, in a_not_decorated
4630 raise ValueError("NOK")
4731 ValueError: NOK
32
33 Traceback (most recent call last):
34 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 19, in a_not_decorated
35 1 / 0
36 ZeroDivisionError: division by zero
37
38 During handling of the above exception, another exception occurred:
39
40 Traceback (most recent call last):
41 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 42, in <module>
42 b_explicit()
43 > File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 35, in b_explicit
44 a_not_decorated()
45 File "tests/exceptions/source/backtrace/chained_expression_direct.py", line 21, in a_not_decorated
46 raise ValueError("NOK")
47 ValueError: NOK
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 10, in a
2 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 11, in a
33 1 / 0
44 ZeroDivisionError: division by zero
55
66 During handling of the above exception, another exception occurred:
77
88 Traceback (most recent call last):
9 > File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 20, in <module>
9 > File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 21, in <module>
1010 b()
11 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 17, in b
11 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 18, in b
1212 a()
13 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 12, in a
13 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 13, in a
1414 raise ValueError("NOK")
1515 ValueError: NOK
1616
1717 Traceback (most recent call last):
18 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 10, in a
18 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 11, in a
1919 1 / 0
2020 ZeroDivisionError: division by zero
2121
2222 During handling of the above exception, another exception occurred:
2323
2424 Traceback (most recent call last):
25 > File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 23, in <module>
25 > File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 24, in <module>
2626 a()
27 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 12, in a
27 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 13, in a
2828 raise ValueError("NOK")
2929 ValueError: NOK
3030
3131 Traceback (most recent call last):
32 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 10, in a
32 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 11, in a
3333 1 / 0
3434 ZeroDivisionError: division by zero
3535
3636 During handling of the above exception, another exception occurred:
3737
3838 Traceback (most recent call last):
39 > File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 26, in <module>
39 > File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 27, in <module>
4040 a()
41 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 12, in a
41 File "tests/exceptions/source/backtrace/chained_expression_indirect.py", line 13, in a
4242 raise ValueError("NOK")
4343 ValueError: NOK
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/chaining_first.py", line 25, in <module>
2 > File "tests/exceptions/source/backtrace/chaining_first.py", line 26, in <module>
33 a_decorated()
4 File "tests/exceptions/source/backtrace/chaining_first.py", line 10, in a_decorated
4 File "tests/exceptions/source/backtrace/chaining_first.py", line 11, in a_decorated
55 b()
6 File "tests/exceptions/source/backtrace/chaining_first.py", line 18, in b
6 File "tests/exceptions/source/backtrace/chaining_first.py", line 19, in b
77 c()
8 File "tests/exceptions/source/backtrace/chaining_first.py", line 22, in c
8 File "tests/exceptions/source/backtrace/chaining_first.py", line 23, in c
99 1 / 0
1010 ZeroDivisionError: division by zero
1111
1212 Traceback (most recent call last):
13 > File "tests/exceptions/source/backtrace/chaining_first.py", line 29, in <module>
13 > File "tests/exceptions/source/backtrace/chaining_first.py", line 30, in <module>
1414 a_not_decorated()
15 File "tests/exceptions/source/backtrace/chaining_first.py", line 14, in a_not_decorated
15 File "tests/exceptions/source/backtrace/chaining_first.py", line 15, in a_not_decorated
1616 b()
17 File "tests/exceptions/source/backtrace/chaining_first.py", line 18, in b
17 File "tests/exceptions/source/backtrace/chaining_first.py", line 19, in b
1818 c()
19 File "tests/exceptions/source/backtrace/chaining_first.py", line 22, in c
19 File "tests/exceptions/source/backtrace/chaining_first.py", line 23, in c
2020 1 / 0
2121 ZeroDivisionError: division by zero
2222
2323 Traceback (most recent call last):
24 > File "tests/exceptions/source/backtrace/chaining_first.py", line 32, in <module>
24 > File "tests/exceptions/source/backtrace/chaining_first.py", line 33, in <module>
2525 a_not_decorated()
26 File "tests/exceptions/source/backtrace/chaining_first.py", line 14, in a_not_decorated
26 File "tests/exceptions/source/backtrace/chaining_first.py", line 15, in a_not_decorated
2727 b()
28 File "tests/exceptions/source/backtrace/chaining_first.py", line 18, in b
28 File "tests/exceptions/source/backtrace/chaining_first.py", line 19, in b
2929 c()
30 File "tests/exceptions/source/backtrace/chaining_first.py", line 22, in c
30 File "tests/exceptions/source/backtrace/chaining_first.py", line 23, in c
3131 1 / 0
3232 ZeroDivisionError: division by zero
0
1 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/chaining_second.py", line 37, in <module>
3 a_decorator()
4 > File "tests/exceptions/source/backtrace/chaining_second.py", line 9, in a_decorator
5 b_decorated()
6 File "tests/exceptions/source/backtrace/chaining_second.py", line 26, in b_decorated
7 c()
8 File "tests/exceptions/source/backtrace/chaining_second.py", line 34, in c
9 1 / 0
10 ZeroDivisionError: division by zero
110
121 Traceback (most recent call last):
132 File "tests/exceptions/source/backtrace/chaining_second.py", line 38, in <module>
14 a_context_manager()
15 > File "tests/exceptions/source/backtrace/chaining_second.py", line 14, in a_context_manager
16 b_not_decorated()
17 File "tests/exceptions/source/backtrace/chaining_second.py", line 30, in b_not_decorated
3 a_decorator()
4 > File "tests/exceptions/source/backtrace/chaining_second.py", line 10, in a_decorator
5 b_decorated()
6 File "tests/exceptions/source/backtrace/chaining_second.py", line 27, in b_decorated
187 c()
19 File "tests/exceptions/source/backtrace/chaining_second.py", line 34, in c
8 File "tests/exceptions/source/backtrace/chaining_second.py", line 35, in c
209 1 / 0
2110 ZeroDivisionError: division by zero
2211
2312 Traceback (most recent call last):
2413 File "tests/exceptions/source/backtrace/chaining_second.py", line 39, in <module>
25 a_explicit()
26 > File "tests/exceptions/source/backtrace/chaining_second.py", line 19, in a_explicit
14 a_context_manager()
15 > File "tests/exceptions/source/backtrace/chaining_second.py", line 15, in a_context_manager
2716 b_not_decorated()
28 File "tests/exceptions/source/backtrace/chaining_second.py", line 30, in b_not_decorated
17 File "tests/exceptions/source/backtrace/chaining_second.py", line 31, in b_not_decorated
2918 c()
30 File "tests/exceptions/source/backtrace/chaining_second.py", line 34, in c
19 File "tests/exceptions/source/backtrace/chaining_second.py", line 35, in c
3120 1 / 0
3221 ZeroDivisionError: division by zero
22
23 Traceback (most recent call last):
24 File "tests/exceptions/source/backtrace/chaining_second.py", line 40, in <module>
25 a_explicit()
26 > File "tests/exceptions/source/backtrace/chaining_second.py", line 20, in a_explicit
27 b_not_decorated()
28 File "tests/exceptions/source/backtrace/chaining_second.py", line 31, in b_not_decorated
29 c()
30 File "tests/exceptions/source/backtrace/chaining_second.py", line 35, in c
31 1 / 0
32 ZeroDivisionError: division by zero
0
1 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/chaining_third.py", line 45, in <module>
3 a_decorator()
4 File "tests/exceptions/source/backtrace/chaining_third.py", line 9, in a_decorator
5 b_decorator()
6 > File "tests/exceptions/source/backtrace/chaining_third.py", line 21, in b_decorator
7 c_decorated()
8 File "tests/exceptions/source/backtrace/chaining_third.py", line 38, in c_decorated
9 1 / 0
10 ZeroDivisionError: division by zero
110
121 Traceback (most recent call last):
132 File "tests/exceptions/source/backtrace/chaining_third.py", line 46, in <module>
14 a_context_manager()
15 File "tests/exceptions/source/backtrace/chaining_third.py", line 13, in a_context_manager
16 b_context_manager()
17 > File "tests/exceptions/source/backtrace/chaining_third.py", line 26, in b_context_manager
18 c_not_decorated()
19 File "tests/exceptions/source/backtrace/chaining_third.py", line 42, in c_not_decorated
3 a_decorator()
4 File "tests/exceptions/source/backtrace/chaining_third.py", line 10, in a_decorator
5 b_decorator()
6 > File "tests/exceptions/source/backtrace/chaining_third.py", line 22, in b_decorator
7 c_decorated()
8 File "tests/exceptions/source/backtrace/chaining_third.py", line 39, in c_decorated
209 1 / 0
2110 ZeroDivisionError: division by zero
2211
2312 Traceback (most recent call last):
2413 File "tests/exceptions/source/backtrace/chaining_third.py", line 47, in <module>
25 a_explicit()
26 File "tests/exceptions/source/backtrace/chaining_third.py", line 17, in a_explicit
27 b_explicit()
28 > File "tests/exceptions/source/backtrace/chaining_third.py", line 31, in b_explicit
14 a_context_manager()
15 File "tests/exceptions/source/backtrace/chaining_third.py", line 14, in a_context_manager
16 b_context_manager()
17 > File "tests/exceptions/source/backtrace/chaining_third.py", line 27, in b_context_manager
2918 c_not_decorated()
30 File "tests/exceptions/source/backtrace/chaining_third.py", line 42, in c_not_decorated
19 File "tests/exceptions/source/backtrace/chaining_third.py", line 43, in c_not_decorated
3120 1 / 0
3221 ZeroDivisionError: division by zero
22
23 Traceback (most recent call last):
24 File "tests/exceptions/source/backtrace/chaining_third.py", line 48, in <module>
25 a_explicit()
26 File "tests/exceptions/source/backtrace/chaining_third.py", line 18, in a_explicit
27 b_explicit()
28 > File "tests/exceptions/source/backtrace/chaining_third.py", line 32, in b_explicit
29 c_not_decorated()
30 File "tests/exceptions/source/backtrace/chaining_third.py", line 43, in c_not_decorated
31 1 / 0
32 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/enqueue.py", line 8, in <module>
2 > File "tests/exceptions/source/backtrace/enqueue.py", line 9, in <module>
33 1 / 0
44 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/enqueue_with_others_handlers.py", line 25, in <module>
2 > File "tests/exceptions/source/backtrace/enqueue_with_others_handlers.py", line 26, in <module>
33 1 / 0
44 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/frame_values_backward.py", line 23, in <module>
2 File "tests/exceptions/source/backtrace/frame_values_backward.py", line 24, in <module>
33 c(k)
4 File "tests/exceptions/source/backtrace/frame_values_backward.py", line 20, in c
4 File "tests/exceptions/source/backtrace/frame_values_backward.py", line 21, in c
55 b(n - 1)
6 > File "tests/exceptions/source/backtrace/frame_values_backward.py", line 16, in b
6 > File "tests/exceptions/source/backtrace/frame_values_backward.py", line 17, in b
77 a(n - 1)
8 File "tests/exceptions/source/backtrace/frame_values_backward.py", line 12, in a
8 File "tests/exceptions/source/backtrace/frame_values_backward.py", line 13, in a
99 1 / n
1010 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/frame_values_forward.py", line 23, in <module>
2 > File "tests/exceptions/source/backtrace/frame_values_forward.py", line 24, in <module>
33 c(k)
4 File "tests/exceptions/source/backtrace/frame_values_forward.py", line 20, in c
4 File "tests/exceptions/source/backtrace/frame_values_forward.py", line 21, in c
55 b(n - 1)
6 File "tests/exceptions/source/backtrace/frame_values_forward.py", line 15, in b
6 File "tests/exceptions/source/backtrace/frame_values_forward.py", line 16, in b
77 a(n - 1)
8 File "tests/exceptions/source/backtrace/frame_values_forward.py", line 11, in a
8 File "tests/exceptions/source/backtrace/frame_values_forward.py", line 12, in a
99 1 / n
1010 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/function.py", line 21, in <module>
2 > File "tests/exceptions/source/backtrace/function.py", line 22, in <module>
33 a()
4 File "tests/exceptions/source/backtrace/function.py", line 10, in a
4 File "tests/exceptions/source/backtrace/function.py", line 11, in a
55 1 / 0
66 ZeroDivisionError: division by zero
77
88 Traceback (most recent call last):
9 > File "tests/exceptions/source/backtrace/function.py", line 24, in <module>
9 > File "tests/exceptions/source/backtrace/function.py", line 25, in <module>
1010 b()
11 File "tests/exceptions/source/backtrace/function.py", line 14, in b
11 File "tests/exceptions/source/backtrace/function.py", line 15, in b
1212 2 / 0
1313 ZeroDivisionError: division by zero
1414
1515 Traceback (most recent call last):
16 > File "tests/exceptions/source/backtrace/function.py", line 27, in <module>
16 > File "tests/exceptions/source/backtrace/function.py", line 28, in <module>
1717 c()
18 File "tests/exceptions/source/backtrace/function.py", line 18, in c
18 File "tests/exceptions/source/backtrace/function.py", line 19, in c
1919 3 / 0
2020 ZeroDivisionError: division by zero
0
1 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/head_recursion.py", line 31, in <module>
3 a(1)
4 > File "tests/exceptions/source/backtrace/head_recursion.py", line 11, in a
5 a(n - 1)
6 File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
7 1 / n
8 ZeroDivisionError: division by zero
90
101 Traceback (most recent call last):
112 File "tests/exceptions/source/backtrace/head_recursion.py", line 32, in <module>
12 a(2)
13 File "tests/exceptions/source/backtrace/head_recursion.py", line 11, in a
3 a(1)
4 > File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
145 a(n - 1)
15 > File "tests/exceptions/source/backtrace/head_recursion.py", line 11, in a
16 a(n - 1)
17 File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
6 File "tests/exceptions/source/backtrace/head_recursion.py", line 13, in a
187 1 / n
198 ZeroDivisionError: division by zero
209
2110 Traceback (most recent call last):
2211 File "tests/exceptions/source/backtrace/head_recursion.py", line 33, in <module>
23 a(3)
24 File "tests/exceptions/source/backtrace/head_recursion.py", line 11, in a
12 a(2)
13 File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
2514 a(n - 1)
26 File "tests/exceptions/source/backtrace/head_recursion.py", line 11, in a
15 > File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
2716 a(n - 1)
28 > File "tests/exceptions/source/backtrace/head_recursion.py", line 11, in a
29 a(n - 1)
30 File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
17 File "tests/exceptions/source/backtrace/head_recursion.py", line 13, in a
3118 1 / n
3219 ZeroDivisionError: division by zero
3320
3421 Traceback (most recent call last):
35 File "tests/exceptions/source/backtrace/head_recursion.py", line 35, in <module>
36 b(1)
37 > File "tests/exceptions/source/backtrace/head_recursion.py", line 18, in b
38 b(n - 1)
39 File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
22 File "tests/exceptions/source/backtrace/head_recursion.py", line 34, in <module>
23 a(3)
24 File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
25 a(n - 1)
26 File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
27 a(n - 1)
28 > File "tests/exceptions/source/backtrace/head_recursion.py", line 12, in a
29 a(n - 1)
30 File "tests/exceptions/source/backtrace/head_recursion.py", line 13, in a
4031 1 / n
4132 ZeroDivisionError: division by zero
4233
4334 Traceback (most recent call last):
4435 File "tests/exceptions/source/backtrace/head_recursion.py", line 36, in <module>
45 b(2)
46 File "tests/exceptions/source/backtrace/head_recursion.py", line 18, in b
36 b(1)
37 > File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
4738 b(n - 1)
48 > File "tests/exceptions/source/backtrace/head_recursion.py", line 18, in b
49 b(n - 1)
50 File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
39 File "tests/exceptions/source/backtrace/head_recursion.py", line 20, in b
5140 1 / n
5241 ZeroDivisionError: division by zero
5342
5443 Traceback (most recent call last):
5544 File "tests/exceptions/source/backtrace/head_recursion.py", line 37, in <module>
56 b(3)
57 File "tests/exceptions/source/backtrace/head_recursion.py", line 18, in b
45 b(2)
46 File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
5847 b(n - 1)
59 File "tests/exceptions/source/backtrace/head_recursion.py", line 18, in b
48 > File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
6049 b(n - 1)
61 > File "tests/exceptions/source/backtrace/head_recursion.py", line 18, in b
62 b(n - 1)
63 File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
50 File "tests/exceptions/source/backtrace/head_recursion.py", line 20, in b
6451 1 / n
6552 ZeroDivisionError: division by zero
6653
6754 Traceback (most recent call last):
68 File "tests/exceptions/source/backtrace/head_recursion.py", line 39, in <module>
69 c(1)
70 > File "tests/exceptions/source/backtrace/head_recursion.py", line 25, in c
71 c(n - 1)
72 File "tests/exceptions/source/backtrace/head_recursion.py", line 28, in c
55 File "tests/exceptions/source/backtrace/head_recursion.py", line 38, in <module>
56 b(3)
57 File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
58 b(n - 1)
59 File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
60 b(n - 1)
61 > File "tests/exceptions/source/backtrace/head_recursion.py", line 19, in b
62 b(n - 1)
63 File "tests/exceptions/source/backtrace/head_recursion.py", line 20, in b
7364 1 / n
7465 ZeroDivisionError: division by zero
7566
7667 Traceback (most recent call last):
7768 File "tests/exceptions/source/backtrace/head_recursion.py", line 40, in <module>
78 c(2)
79 File "tests/exceptions/source/backtrace/head_recursion.py", line 25, in c
69 c(1)
70 > File "tests/exceptions/source/backtrace/head_recursion.py", line 26, in c
8071 c(n - 1)
81 > File "tests/exceptions/source/backtrace/head_recursion.py", line 25, in c
82 c(n - 1)
83 File "tests/exceptions/source/backtrace/head_recursion.py", line 28, in c
72 File "tests/exceptions/source/backtrace/head_recursion.py", line 29, in c
8473 1 / n
8574 ZeroDivisionError: division by zero
8675
8776 Traceback (most recent call last):
8877 File "tests/exceptions/source/backtrace/head_recursion.py", line 41, in <module>
89 c(3)
90 File "tests/exceptions/source/backtrace/head_recursion.py", line 25, in c
78 c(2)
79 File "tests/exceptions/source/backtrace/head_recursion.py", line 26, in c
9180 c(n - 1)
92 File "tests/exceptions/source/backtrace/head_recursion.py", line 25, in c
81 > File "tests/exceptions/source/backtrace/head_recursion.py", line 26, in c
9382 c(n - 1)
94 > File "tests/exceptions/source/backtrace/head_recursion.py", line 25, in c
95 c(n - 1)
96 File "tests/exceptions/source/backtrace/head_recursion.py", line 28, in c
83 File "tests/exceptions/source/backtrace/head_recursion.py", line 29, in c
9784 1 / n
9885 ZeroDivisionError: division by zero
86
87 Traceback (most recent call last):
88 File "tests/exceptions/source/backtrace/head_recursion.py", line 42, in <module>
89 c(3)
90 File "tests/exceptions/source/backtrace/head_recursion.py", line 26, in c
91 c(n - 1)
92 File "tests/exceptions/source/backtrace/head_recursion.py", line 26, in c
93 c(n - 1)
94 > File "tests/exceptions/source/backtrace/head_recursion.py", line 26, in c
95 c(n - 1)
96 File "tests/exceptions/source/backtrace/head_recursion.py", line 29, in c
97 1 / n
98 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/missing_attributes_traceback_objects.py", line 37, in <module>
2 > File "tests/exceptions/source/backtrace/missing_attributes_traceback_objects.py", line 38, in <module>
33 foo()
4 File "tests/exceptions/source/backtrace/missing_attributes_traceback_objects.py", line 17, in foo
4 File "tests/exceptions/source/backtrace/missing_attributes_traceback_objects.py", line 18, in foo
55 div(a, b)
6 File "tests/exceptions/source/backtrace/missing_attributes_traceback_objects.py", line 13, in div
6 File "tests/exceptions/source/backtrace/missing_attributes_traceback_objects.py", line 14, in div
77 x / y
88 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/nested.py", line 16, in <module>
2 File "tests/exceptions/source/backtrace/nested.py", line 17, in <module>
33 a(0)
4 > File "tests/exceptions/source/backtrace/nested.py", line 13, in a
4 > File "tests/exceptions/source/backtrace/nested.py", line 14, in a
55 nested(x)
6 File "tests/exceptions/source/backtrace/nested.py", line 11, in nested
6 File "tests/exceptions/source/backtrace/nested.py", line 12, in nested
77 1 / i
88 ZeroDivisionError: division by zero
99
1010 Traceback (most recent call last):
11 File "tests/exceptions/source/backtrace/nested.py", line 27, in <module>
11 File "tests/exceptions/source/backtrace/nested.py", line 28, in <module>
1212 b(0)
13 > File "tests/exceptions/source/backtrace/nested.py", line 24, in b
13 > File "tests/exceptions/source/backtrace/nested.py", line 25, in b
1414 nested(x)
15 File "tests/exceptions/source/backtrace/nested.py", line 21, in nested
15 File "tests/exceptions/source/backtrace/nested.py", line 22, in nested
1616 1 / i
1717 ZeroDivisionError: division by zero
1818
1919 Traceback (most recent call last):
20 File "tests/exceptions/source/backtrace/nested.py", line 40, in <module>
20 File "tests/exceptions/source/backtrace/nested.py", line 41, in <module>
2121 c(0)
22 > File "tests/exceptions/source/backtrace/nested.py", line 35, in c
22 > File "tests/exceptions/source/backtrace/nested.py", line 36, in c
2323 nested(x)
24 File "tests/exceptions/source/backtrace/nested.py", line 32, in nested
24 File "tests/exceptions/source/backtrace/nested.py", line 33, in nested
2525 1 / i
2626 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 21, in main
2 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 22, in main
33 foo()
4 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 10, in foo
4 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 11, in foo
55 bar()
6 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 15, in bar
6 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 16, in bar
77 1 / 0
88 ZeroDivisionError: division by zero
99
1010 The above exception was the direct cause of the following exception:
1111
1212 Traceback (most recent call last):
13 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 26, in <module>
13 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 27, in <module>
1414 main()
15 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 23, in main
15 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 24, in main
1616 raise ZeroDivisionError from e
1717 ZeroDivisionError
1818
1919 Traceback (most recent call last):
20 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 21, in main
20 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 22, in main
2121 foo()
22 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 10, in foo
22 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 11, in foo
2323 bar()
24 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 15, in bar
24 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 16, in bar
2525 1 / 0
2626 ZeroDivisionError: division by zero
2727
2828 The above exception was the direct cause of the following exception:
2929
3030 Traceback (most recent call last):
31 > File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 26, in <module>
31 > File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 27, in <module>
3232 main()
33 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 23, in main
33 File "tests/exceptions/source/backtrace/nested_chained_catch_up.py", line 24, in main
3434 raise ZeroDivisionError from e
3535 ZeroDivisionError
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 19, in <module>
2 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 20, in <module>
33 foo()
4 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 11, in foo
4 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 12, in foo
55 bar()
6 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 16, in bar
6 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 17, in bar
77 1 / 0
88 ZeroDivisionError: division by zero
99
1010 Traceback (most recent call last):
11 > File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 19, in <module>
11 > File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 20, in <module>
1212 foo()
13 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 11, in foo
13 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 12, in foo
1414 bar()
15 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 16, in bar
15 File "tests/exceptions/source/backtrace/nested_decorator_catch_up.py", line 17, in bar
1616 1 / 0
1717 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 19, in <module>
2 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 20, in <module>
33 foo()
4 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 10, in foo
4 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 11, in foo
55 bar()
6 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 15, in bar
6 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 16, in bar
77 1 / 0
88 ZeroDivisionError: division by zero
99
1010 Traceback (most recent call last):
11 > File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 19, in <module>
11 > File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 20, in <module>
1212 foo()
13 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 10, in foo
13 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 11, in foo
1414 bar()
15 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 15, in bar
15 File "tests/exceptions/source/backtrace/nested_explicit_catch_up.py", line 16, in bar
1616 1 / 0
1717 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/nested_wrapping.py", line 18, in <module>
2 > File "tests/exceptions/source/backtrace/nested_wrapping.py", line 19, in <module>
33 a(0)
4 File "tests/exceptions/source/backtrace/nested_wrapping.py", line 15, in a
4 File "tests/exceptions/source/backtrace/nested_wrapping.py", line 16, in a
55 f(x)
6 File "tests/exceptions/source/backtrace/nested_wrapping.py", line 9, in f
6 File "tests/exceptions/source/backtrace/nested_wrapping.py", line 10, in f
77 1 / i
88 ZeroDivisionError: division by zero
99
1010 Traceback (most recent call last):
11 > File "tests/exceptions/source/backtrace/nested_wrapping.py", line 23, in <module>
11 > File "tests/exceptions/source/backtrace/nested_wrapping.py", line 24, in <module>
1212 f(0)
13 File "tests/exceptions/source/backtrace/nested_wrapping.py", line 9, in f
13 File "tests/exceptions/source/backtrace/nested_wrapping.py", line 10, in f
1414 1 / i
1515 ZeroDivisionError: division by zero
1616
1717 Traceback (most recent call last):
18 > File "tests/exceptions/source/backtrace/nested_wrapping.py", line 28, in <module>
18 > File "tests/exceptions/source/backtrace/nested_wrapping.py", line 29, in <module>
1919 f(0)
20 File "tests/exceptions/source/backtrace/nested_wrapping.py", line 9, in f
20 File "tests/exceptions/source/backtrace/nested_wrapping.py", line 10, in f
2121 1 / i
2222 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/not_enough_arguments.py", line 17, in <module>
2 > File "tests/exceptions/source/backtrace/not_enough_arguments.py", line 18, in <module>
33 decorated(1)
44 TypeError: decorated() missing 2 required positional arguments: 'y' and 'z'
55
66 Traceback (most recent call last):
7 > File "tests/exceptions/source/backtrace/not_enough_arguments.py", line 20, in <module>
7 > File "tests/exceptions/source/backtrace/not_enough_arguments.py", line 21, in <module>
88 not_decorated(2)
99 TypeError: not_decorated() missing 2 required positional arguments: 'y' and 'z'
1010
1111 Traceback (most recent call last):
12 > File "tests/exceptions/source/backtrace/not_enough_arguments.py", line 23, in <module>
12 > File "tests/exceptions/source/backtrace/not_enough_arguments.py", line 24, in <module>
1313 not_decorated(3)
1414 TypeError: not_decorated() missing 2 required positional arguments: 'y' and 'z'
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/raising_recursion.py", line 31, in <module>
2 File "tests/exceptions/source/backtrace/raising_recursion.py", line 32, in <module>
33 a(1)
4 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
5 a(n - 1)
6 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
7 n / 0
8 ZeroDivisionError: division by zero
9
10 Traceback (most recent call last):
11 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 31, in <module>
4 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
5 a(n - 1)
6 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
7 n / 0
8 ZeroDivisionError: division by zero
9
10 Traceback (most recent call last):
11 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 32, in <module>
1212 a(1)
13 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
14 n / 0
15 ZeroDivisionError: division by zero
16
17 Traceback (most recent call last):
18 File "tests/exceptions/source/backtrace/raising_recursion.py", line 32, in <module>
13 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
14 n / 0
15 ZeroDivisionError: division by zero
16
17 Traceback (most recent call last):
18 File "tests/exceptions/source/backtrace/raising_recursion.py", line 33, in <module>
1919 a(2)
20 File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
21 a(n - 1)
22 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
23 a(n - 1)
24 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
25 n / 0
26 ZeroDivisionError: division by zero
27
28 Traceback (most recent call last):
29 File "tests/exceptions/source/backtrace/raising_recursion.py", line 32, in <module>
20 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
21 a(n - 1)
22 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
23 a(n - 1)
24 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
25 n / 0
26 ZeroDivisionError: division by zero
27
28 Traceback (most recent call last):
29 File "tests/exceptions/source/backtrace/raising_recursion.py", line 33, in <module>
3030 a(2)
31 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
32 a(n - 1)
33 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
34 n / 0
35 ZeroDivisionError: division by zero
36
37 Traceback (most recent call last):
38 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 32, in <module>
31 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
32 a(n - 1)
33 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
34 n / 0
35 ZeroDivisionError: division by zero
36
37 Traceback (most recent call last):
38 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 33, in <module>
3939 a(2)
40 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
41 n / 0
42 ZeroDivisionError: division by zero
43
44 Traceback (most recent call last):
45 File "tests/exceptions/source/backtrace/raising_recursion.py", line 33, in <module>
46 a(3)
47 File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
48 a(n - 1)
49 File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
50 a(n - 1)
51 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
52 a(n - 1)
53 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
54 n / 0
55 ZeroDivisionError: division by zero
56
57 Traceback (most recent call last):
58 File "tests/exceptions/source/backtrace/raising_recursion.py", line 33, in <module>
59 a(3)
60 File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
61 a(n - 1)
62 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
63 a(n - 1)
64 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
65 n / 0
66 ZeroDivisionError: division by zero
67
68 Traceback (most recent call last):
69 File "tests/exceptions/source/backtrace/raising_recursion.py", line 33, in <module>
70 a(3)
71 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 11, in a
72 a(n - 1)
73 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
74 n / 0
75 ZeroDivisionError: division by zero
76
77 Traceback (most recent call last):
78 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 33, in <module>
79 a(3)
80 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
81 n / 0
82 ZeroDivisionError: division by zero
83
84 Traceback (most recent call last):
85 File "tests/exceptions/source/backtrace/raising_recursion.py", line 35, in <module>
40 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
41 n / 0
42 ZeroDivisionError: division by zero
43
44 Traceback (most recent call last):
45 File "tests/exceptions/source/backtrace/raising_recursion.py", line 34, in <module>
46 a(3)
47 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
48 a(n - 1)
49 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
50 a(n - 1)
51 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
52 a(n - 1)
53 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
54 n / 0
55 ZeroDivisionError: division by zero
56
57 Traceback (most recent call last):
58 File "tests/exceptions/source/backtrace/raising_recursion.py", line 34, in <module>
59 a(3)
60 File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
61 a(n - 1)
62 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
63 a(n - 1)
64 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
65 n / 0
66 ZeroDivisionError: division by zero
67
68 Traceback (most recent call last):
69 File "tests/exceptions/source/backtrace/raising_recursion.py", line 34, in <module>
70 a(3)
71 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 12, in a
72 a(n - 1)
73 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
74 n / 0
75 ZeroDivisionError: division by zero
76
77 Traceback (most recent call last):
78 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 34, in <module>
79 a(3)
80 File "tests/exceptions/source/backtrace/raising_recursion.py", line 13, in a
81 n / 0
82 ZeroDivisionError: division by zero
83
84 Traceback (most recent call last):
85 File "tests/exceptions/source/backtrace/raising_recursion.py", line 36, in <module>
8686 b(1)
87 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
88 b(n - 1)
89 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
90 n / 0
91 ZeroDivisionError: division by zero
92
93 Traceback (most recent call last):
94 File "tests/exceptions/source/backtrace/raising_recursion.py", line 35, in <module>
87 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
88 b(n - 1)
89 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
90 n / 0
91 ZeroDivisionError: division by zero
92
93 Traceback (most recent call last):
94 File "tests/exceptions/source/backtrace/raising_recursion.py", line 36, in <module>
9595 b(1)
96 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
97 n / 0
98 ZeroDivisionError: division by zero
99
100 Traceback (most recent call last):
101 File "tests/exceptions/source/backtrace/raising_recursion.py", line 36, in <module>
96 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
97 n / 0
98 ZeroDivisionError: division by zero
99
100 Traceback (most recent call last):
101 File "tests/exceptions/source/backtrace/raising_recursion.py", line 37, in <module>
102102 b(2)
103 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
104 b(n - 1)
105 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
106 b(n - 1)
107 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
108 n / 0
109 ZeroDivisionError: division by zero
110
111 Traceback (most recent call last):
112 File "tests/exceptions/source/backtrace/raising_recursion.py", line 36, in <module>
103 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
104 b(n - 1)
105 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
106 b(n - 1)
107 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
108 n / 0
109 ZeroDivisionError: division by zero
110
111 Traceback (most recent call last):
112 File "tests/exceptions/source/backtrace/raising_recursion.py", line 37, in <module>
113113 b(2)
114 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
115 b(n - 1)
116 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
117 n / 0
118 ZeroDivisionError: division by zero
119
120 Traceback (most recent call last):
121 File "tests/exceptions/source/backtrace/raising_recursion.py", line 36, in <module>
114 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
115 b(n - 1)
116 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
117 n / 0
118 ZeroDivisionError: division by zero
119
120 Traceback (most recent call last):
121 File "tests/exceptions/source/backtrace/raising_recursion.py", line 37, in <module>
122122 b(2)
123 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
124 n / 0
125 ZeroDivisionError: division by zero
126
127 Traceback (most recent call last):
128 File "tests/exceptions/source/backtrace/raising_recursion.py", line 37, in <module>
129 b(3)
130 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
131 b(n - 1)
132 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
133 b(n - 1)
134 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
135 b(n - 1)
136 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
137 n / 0
138 ZeroDivisionError: division by zero
139
140 Traceback (most recent call last):
141 File "tests/exceptions/source/backtrace/raising_recursion.py", line 37, in <module>
142 b(3)
143 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
144 b(n - 1)
145 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
146 b(n - 1)
147 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
148 n / 0
149 ZeroDivisionError: division by zero
150
151 Traceback (most recent call last):
152 File "tests/exceptions/source/backtrace/raising_recursion.py", line 37, in <module>
153 b(3)
154 File "tests/exceptions/source/backtrace/raising_recursion.py", line 18, in b
155 b(n - 1)
156 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
157 n / 0
158 ZeroDivisionError: division by zero
159
160 Traceback (most recent call last):
161 File "tests/exceptions/source/backtrace/raising_recursion.py", line 37, in <module>
162 b(3)
163 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
164 n / 0
165 ZeroDivisionError: division by zero
166
167 Traceback (most recent call last):
168 File "tests/exceptions/source/backtrace/raising_recursion.py", line 39, in <module>
123 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
124 n / 0
125 ZeroDivisionError: division by zero
126
127 Traceback (most recent call last):
128 File "tests/exceptions/source/backtrace/raising_recursion.py", line 38, in <module>
129 b(3)
130 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
131 b(n - 1)
132 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
133 b(n - 1)
134 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
135 b(n - 1)
136 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
137 n / 0
138 ZeroDivisionError: division by zero
139
140 Traceback (most recent call last):
141 File "tests/exceptions/source/backtrace/raising_recursion.py", line 38, in <module>
142 b(3)
143 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
144 b(n - 1)
145 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
146 b(n - 1)
147 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
148 n / 0
149 ZeroDivisionError: division by zero
150
151 Traceback (most recent call last):
152 File "tests/exceptions/source/backtrace/raising_recursion.py", line 38, in <module>
153 b(3)
154 File "tests/exceptions/source/backtrace/raising_recursion.py", line 19, in b
155 b(n - 1)
156 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
157 n / 0
158 ZeroDivisionError: division by zero
159
160 Traceback (most recent call last):
161 File "tests/exceptions/source/backtrace/raising_recursion.py", line 38, in <module>
162 b(3)
163 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 20, in b
164 n / 0
165 ZeroDivisionError: division by zero
166
167 Traceback (most recent call last):
168 File "tests/exceptions/source/backtrace/raising_recursion.py", line 40, in <module>
169169 c(1)
170 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
171 c(n - 1)
172 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
173 n / 0
174 ZeroDivisionError: division by zero
175
176 Traceback (most recent call last):
177 File "tests/exceptions/source/backtrace/raising_recursion.py", line 39, in <module>
170 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
171 c(n - 1)
172 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
173 n / 0
174 ZeroDivisionError: division by zero
175
176 Traceback (most recent call last):
177 File "tests/exceptions/source/backtrace/raising_recursion.py", line 40, in <module>
178178 c(1)
179 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
180 n / 0
181 ZeroDivisionError: division by zero
182
183 Traceback (most recent call last):
184 File "tests/exceptions/source/backtrace/raising_recursion.py", line 40, in <module>
179 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
180 n / 0
181 ZeroDivisionError: division by zero
182
183 Traceback (most recent call last):
184 File "tests/exceptions/source/backtrace/raising_recursion.py", line 41, in <module>
185185 c(2)
186 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
187 c(n - 1)
188 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
189 c(n - 1)
190 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
191 n / 0
192 ZeroDivisionError: division by zero
193
194 Traceback (most recent call last):
195 File "tests/exceptions/source/backtrace/raising_recursion.py", line 40, in <module>
186 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
187 c(n - 1)
188 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
189 c(n - 1)
190 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
191 n / 0
192 ZeroDivisionError: division by zero
193
194 Traceback (most recent call last):
195 File "tests/exceptions/source/backtrace/raising_recursion.py", line 41, in <module>
196196 c(2)
197 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
198 c(n - 1)
199 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
200 n / 0
201 ZeroDivisionError: division by zero
202
203 Traceback (most recent call last):
204 File "tests/exceptions/source/backtrace/raising_recursion.py", line 40, in <module>
197 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
198 c(n - 1)
199 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
200 n / 0
201 ZeroDivisionError: division by zero
202
203 Traceback (most recent call last):
204 File "tests/exceptions/source/backtrace/raising_recursion.py", line 41, in <module>
205205 c(2)
206 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
207 n / 0
208 ZeroDivisionError: division by zero
209
210 Traceback (most recent call last):
211 File "tests/exceptions/source/backtrace/raising_recursion.py", line 41, in <module>
212 c(3)
213 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
214 c(n - 1)
215 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
216 c(n - 1)
217 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
218 c(n - 1)
219 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
220 n / 0
221 ZeroDivisionError: division by zero
222
223 Traceback (most recent call last):
224 File "tests/exceptions/source/backtrace/raising_recursion.py", line 41, in <module>
225 c(3)
226 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
227 c(n - 1)
228 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
229 c(n - 1)
230 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
231 n / 0
232 ZeroDivisionError: division by zero
233
234 Traceback (most recent call last):
235 File "tests/exceptions/source/backtrace/raising_recursion.py", line 41, in <module>
236 c(3)
237 File "tests/exceptions/source/backtrace/raising_recursion.py", line 25, in c
238 c(n - 1)
239 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
240 n / 0
241 ZeroDivisionError: division by zero
242
243 Traceback (most recent call last):
244 File "tests/exceptions/source/backtrace/raising_recursion.py", line 41, in <module>
245 c(3)
246 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
247 n / 0
248 ZeroDivisionError: division by zero
206 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
207 n / 0
208 ZeroDivisionError: division by zero
209
210 Traceback (most recent call last):
211 File "tests/exceptions/source/backtrace/raising_recursion.py", line 42, in <module>
212 c(3)
213 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
214 c(n - 1)
215 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
216 c(n - 1)
217 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
218 c(n - 1)
219 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
220 n / 0
221 ZeroDivisionError: division by zero
222
223 Traceback (most recent call last):
224 File "tests/exceptions/source/backtrace/raising_recursion.py", line 42, in <module>
225 c(3)
226 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
227 c(n - 1)
228 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
229 c(n - 1)
230 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
231 n / 0
232 ZeroDivisionError: division by zero
233
234 Traceback (most recent call last):
235 File "tests/exceptions/source/backtrace/raising_recursion.py", line 42, in <module>
236 c(3)
237 File "tests/exceptions/source/backtrace/raising_recursion.py", line 26, in c
238 c(n - 1)
239 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
240 n / 0
241 ZeroDivisionError: division by zero
242
243 Traceback (most recent call last):
244 File "tests/exceptions/source/backtrace/raising_recursion.py", line 42, in <module>
245 c(3)
246 > File "tests/exceptions/source/backtrace/raising_recursion.py", line 27, in c
247 n / 0
248 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 15, in b_decorated
2 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 16, in b_decorated
33 a(1, 0)
4 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 9, in a
5 x / y
6 ZeroDivisionError: division by zero
7
8 The above exception was the direct cause of the following exception:
9
10 Traceback (most recent call last):
11 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 43, in <module>
12 c_decorator()
13 > File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 28, in c_decorator
14 b_decorated()
15 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 17, in b_decorated
16 raise ValueError("NOK") from e
17 ValueError: NOK
18
19 Traceback (most recent call last):
20 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 22, in b_not_decorated
21 a(1, 0)
22 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 9, in a
4 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 10, in a
235 x / y
246 ZeroDivisionError: division by zero
257
279
2810 Traceback (most recent call last):
2911 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 44, in <module>
30 c_context_manager()
31 > File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 33, in c_context_manager
32 b_not_decorated()
33 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 24, in b_not_decorated
12 c_decorator()
13 > File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 29, in c_decorator
14 b_decorated()
15 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 18, in b_decorated
3416 raise ValueError("NOK") from e
3517 ValueError: NOK
3618
3719 Traceback (most recent call last):
38 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 22, in b_not_decorated
20 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 23, in b_not_decorated
3921 a(1, 0)
40 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 9, in a
22 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 10, in a
4123 x / y
4224 ZeroDivisionError: division by zero
4325
4527
4628 Traceback (most recent call last):
4729 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 45, in <module>
48 c_explicit()
49 > File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 38, in c_explicit
30 c_context_manager()
31 > File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 34, in c_context_manager
5032 b_not_decorated()
51 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 24, in b_not_decorated
33 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 25, in b_not_decorated
5234 raise ValueError("NOK") from e
5335 ValueError: NOK
36
37 Traceback (most recent call last):
38 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 23, in b_not_decorated
39 a(1, 0)
40 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 10, in a
41 x / y
42 ZeroDivisionError: division by zero
43
44 The above exception was the direct cause of the following exception:
45
46 Traceback (most recent call last):
47 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 46, in <module>
48 c_explicit()
49 > File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 39, in c_explicit
50 b_not_decorated()
51 File "tests/exceptions/source/backtrace/suppressed_expression_direct.py", line 25, in b_not_decorated
52 raise ValueError("NOK") from e
53 ValueError: NOK
00
11 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 14, in b
2 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 15, in b
33 a(1, 0)
4 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 9, in a
4 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 10, in a
55 x / y
66 ZeroDivisionError: division by zero
77
88 The above exception was the direct cause of the following exception:
99
1010 Traceback (most recent call last):
11 > File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 28, in <module>
11 > File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 29, in <module>
1212 c_decorated()
13 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 21, in c_decorated
13 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 22, in c_decorated
1414 b()
15 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 16, in b
15 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 17, in b
1616 raise ValueError("NOK") from e
1717 ValueError: NOK
1818
1919 Traceback (most recent call last):
20 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 14, in b
20 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 15, in b
2121 a(1, 0)
22 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 9, in a
22 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 10, in a
2323 x / y
2424 ZeroDivisionError: division by zero
2525
2626 The above exception was the direct cause of the following exception:
2727
2828 Traceback (most recent call last):
29 > File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 31, in <module>
29 > File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 32, in <module>
3030 c_not_decorated()
31 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 25, in c_not_decorated
31 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 26, in c_not_decorated
3232 b()
33 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 16, in b
33 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 17, in b
3434 raise ValueError("NOK") from e
3535 ValueError: NOK
3636
3737 Traceback (most recent call last):
38 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 14, in b
38 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 15, in b
3939 a(1, 0)
40 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 9, in a
40 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 10, in a
4141 x / y
4242 ZeroDivisionError: division by zero
4343
4444 The above exception was the direct cause of the following exception:
4545
4646 Traceback (most recent call last):
47 > File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 34, in <module>
47 > File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 35, in <module>
4848 c_not_decorated()
49 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 25, in c_not_decorated
49 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 26, in c_not_decorated
5050 b()
51 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 16, in b
51 File "tests/exceptions/source/backtrace/suppressed_expression_indirect.py", line 17, in b
5252 raise ValueError("NOK") from e
5353 ValueError: NOK
0
1 Traceback (most recent call last):
2 File "tests/exceptions/source/backtrace/tail_recursion.py", line 28, in <module>
3 a(1)
4 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 11, in a
5 a(n - 1)
6 File "tests/exceptions/source/backtrace/tail_recursion.py", line 10, in a
7 1 / n
8 ZeroDivisionError: division by zero
90
101 Traceback (most recent call last):
112 File "tests/exceptions/source/backtrace/tail_recursion.py", line 29, in <module>
12 a(2)
3 a(1)
4 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 12, in a
5 a(n - 1)
136 File "tests/exceptions/source/backtrace/tail_recursion.py", line 11, in a
14 a(n - 1)
15 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 11, in a
16 a(n - 1)
17 File "tests/exceptions/source/backtrace/tail_recursion.py", line 10, in a
187 1 / n
198 ZeroDivisionError: division by zero
209
2110 Traceback (most recent call last):
2211 File "tests/exceptions/source/backtrace/tail_recursion.py", line 30, in <module>
23 a(3)
24 File "tests/exceptions/source/backtrace/tail_recursion.py", line 11, in a
12 a(2)
13 File "tests/exceptions/source/backtrace/tail_recursion.py", line 12, in a
14 a(n - 1)
15 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 12, in a
2516 a(n - 1)
2617 File "tests/exceptions/source/backtrace/tail_recursion.py", line 11, in a
27 a(n - 1)
28 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 11, in a
29 a(n - 1)
30 File "tests/exceptions/source/backtrace/tail_recursion.py", line 10, in a
3118 1 / n
3219 ZeroDivisionError: division by zero
3320
3421 Traceback (most recent call last):
35 File "tests/exceptions/source/backtrace/tail_recursion.py", line 32, in <module>
36 b(1)
37 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 17, in b
38 b(n - 1)
39 File "tests/exceptions/source/backtrace/tail_recursion.py", line 15, in b
22 File "tests/exceptions/source/backtrace/tail_recursion.py", line 31, in <module>
23 a(3)
24 File "tests/exceptions/source/backtrace/tail_recursion.py", line 12, in a
25 a(n - 1)
26 File "tests/exceptions/source/backtrace/tail_recursion.py", line 12, in a
27 a(n - 1)
28 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 12, in a
29 a(n - 1)
30 File "tests/exceptions/source/backtrace/tail_recursion.py", line 11, in a
4031 1 / n
4132 ZeroDivisionError: division by zero
4233
4334 Traceback (most recent call last):
4435 File "tests/exceptions/source/backtrace/tail_recursion.py", line 33, in <module>
45 b(2)
46 File "tests/exceptions/source/backtrace/tail_recursion.py", line 17, in b
36 b(1)
37 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 18, in b
4738 b(n - 1)
48 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 17, in b
49 b(n - 1)
50 File "tests/exceptions/source/backtrace/tail_recursion.py", line 15, in b
39 File "tests/exceptions/source/backtrace/tail_recursion.py", line 16, in b
5140 1 / n
5241 ZeroDivisionError: division by zero
5342
5443 Traceback (most recent call last):
5544 File "tests/exceptions/source/backtrace/tail_recursion.py", line 34, in <module>
56 b(3)
57 File "tests/exceptions/source/backtrace/tail_recursion.py", line 17, in b
45 b(2)
46 File "tests/exceptions/source/backtrace/tail_recursion.py", line 18, in b
5847 b(n - 1)
59 File "tests/exceptions/source/backtrace/tail_recursion.py", line 17, in b
48 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 18, in b
6049 b(n - 1)
61 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 17, in b
62 b(n - 1)
63 File "tests/exceptions/source/backtrace/tail_recursion.py", line 15, in b
50 File "tests/exceptions/source/backtrace/tail_recursion.py", line 16, in b
6451 1 / n
6552 ZeroDivisionError: division by zero
6653
6754 Traceback (most recent call last):
68 File "tests/exceptions/source/backtrace/tail_recursion.py", line 36, in <module>
69 c(1)
70 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 23, in c
71 c(n - 1)
72 File "tests/exceptions/source/backtrace/tail_recursion.py", line 21, in c
55 File "tests/exceptions/source/backtrace/tail_recursion.py", line 35, in <module>
56 b(3)
57 File "tests/exceptions/source/backtrace/tail_recursion.py", line 18, in b
58 b(n - 1)
59 File "tests/exceptions/source/backtrace/tail_recursion.py", line 18, in b
60 b(n - 1)
61 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 18, in b
62 b(n - 1)
63 File "tests/exceptions/source/backtrace/tail_recursion.py", line 16, in b
7364 1 / n
7465 ZeroDivisionError: division by zero
7566
7667 Traceback (most recent call last):
7768 File "tests/exceptions/source/backtrace/tail_recursion.py", line 37, in <module>
78 c(2)
79 File "tests/exceptions/source/backtrace/tail_recursion.py", line 23, in c
69 c(1)
70 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 24, in c
8071 c(n - 1)
81 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 23, in c
82 c(n - 1)
83 File "tests/exceptions/source/backtrace/tail_recursion.py", line 21, in c
72 File "tests/exceptions/source/backtrace/tail_recursion.py", line 22, in c
8473 1 / n
8574 ZeroDivisionError: division by zero
8675
8776 Traceback (most recent call last):
8877 File "tests/exceptions/source/backtrace/tail_recursion.py", line 38, in <module>
89 c(3)
90 File "tests/exceptions/source/backtrace/tail_recursion.py", line 23, in c
78 c(2)
79 File "tests/exceptions/source/backtrace/tail_recursion.py", line 24, in c
9180 c(n - 1)
92 File "tests/exceptions/source/backtrace/tail_recursion.py", line 23, in c
81 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 24, in c
9382 c(n - 1)
94 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 23, in c
95 c(n - 1)
96 File "tests/exceptions/source/backtrace/tail_recursion.py", line 21, in c
83 File "tests/exceptions/source/backtrace/tail_recursion.py", line 22, in c
9784 1 / n
9885 ZeroDivisionError: division by zero
86
87 Traceback (most recent call last):
88 File "tests/exceptions/source/backtrace/tail_recursion.py", line 39, in <module>
89 c(3)
90 File "tests/exceptions/source/backtrace/tail_recursion.py", line 24, in c
91 c(n - 1)
92 File "tests/exceptions/source/backtrace/tail_recursion.py", line 24, in c
93 c(n - 1)
94 > File "tests/exceptions/source/backtrace/tail_recursion.py", line 24, in c
95 c(n - 1)
96 File "tests/exceptions/source/backtrace/tail_recursion.py", line 22, in c
97 1 / n
98 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
2 > File "tests/exceptions/source/backtrace/too_many_arguments.py", line 17, in <module>
2 > File "tests/exceptions/source/backtrace/too_many_arguments.py", line 18, in <module>
33 decorated(1)
44 TypeError: decorated() takes 0 positional arguments but 1 was given
55
66 Traceback (most recent call last):
7 > File "tests/exceptions/source/backtrace/too_many_arguments.py", line 20, in <module>
7 > File "tests/exceptions/source/backtrace/too_many_arguments.py", line 21, in <module>
88 not_decorated(2)
99 TypeError: not_decorated() takes 0 positional arguments but 1 was given
1010
1111 Traceback (most recent call last):
12 > File "tests/exceptions/source/backtrace/too_many_arguments.py", line 23, in <module>
12 > File "tests/exceptions/source/backtrace/too_many_arguments.py", line 24, in <module>
1313 not_decorated(3)
1414 TypeError: not_decorated() takes 0 positional arguments but 1 was given
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/assertion_error.py", line 13, in <module>
3 File "tests/exceptions/source/diagnose/assertion_error.py", line 14, in <module>
44 foo(9, 55)
55 └ <function foo at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/assertion_error.py", line 9, in foo
7 File "tests/exceptions/source/diagnose/assertion_error.py", line 10, in foo
88 assert abc > 10 and xyz == 60
99  │ └ 55
1010  └ 9
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/assertion_error_custom.py", line 13, in <module>
3 File "tests/exceptions/source/diagnose/assertion_error_custom.py", line 14, in <module>
44 foo(9, 55)
55 └ <function foo at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/assertion_error_custom.py", line 9, in foo
7 File "tests/exceptions/source/diagnose/assertion_error_custom.py", line 10, in foo
88 assert abc > 10 and xyz == 60, "Foo assertion failed"
99  │ └ 55
1010  └ 9
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/assertion_error_in_string.py", line 13, in <module>
3 File "tests/exceptions/source/diagnose/assertion_error_in_string.py", line 14, in <module>
44 foo(9, 55)
55 └ <function foo at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/assertion_error_in_string.py", line 9, in foo
7 File "tests/exceptions/source/diagnose/assertion_error_in_string.py", line 10, in foo
88 exec("assert abc > 10 and xyz == 60")
99
1010 File "<string>", line 1, in <module>
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/attributes.py", line 26, in <module>
3 File "tests/exceptions/source/diagnose/attributes.py", line 27, in <module>
44 foo()
55 └ <function foo at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/attributes.py", line 22, in foo
7 File "tests/exceptions/source/diagnose/attributes.py", line 23, in foo
88 ... + 1 + bar(a).b + a.forbidden + a.nope.a + x.__bool__ or a. b . isdigit() and .3 + ...
99  │ │ │ │ │ │ │ │ └ <method 'isdigit' of 'str' objects>
1010  │ │ │ │ │ │ │ └ '123'
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/chained_both.py", line 14, in cause
3 File "tests/exceptions/source/diagnose/chained_both.py", line 15, in cause
44 div(x, y)
55 │ │ └ 0
66 │ └ 1
77 └ <function div at 0xDEADBEEF>
88
9 File "tests/exceptions/source/diagnose/chained_both.py", line 9, in div
9 File "tests/exceptions/source/diagnose/chained_both.py", line 10, in div
1010 x / y
1111 │ └ 0
1212 └ 1
1919
2020 Traceback (most recent call last):
2121
22 File "tests/exceptions/source/diagnose/chained_both.py", line 21, in context
22 File "tests/exceptions/source/diagnose/chained_both.py", line 22, in context
2323 cause(x, y)
2424 │ │ └ 0
2525 │ └ 1
2626 └ <function cause at 0xDEADBEEF>
2727
28 File "tests/exceptions/source/diagnose/chained_both.py", line 16, in cause
28 File "tests/exceptions/source/diagnose/chained_both.py", line 17, in cause
2929 raise ValueError("Division error")
3030
3131 ValueError: Division error
3636
3737 Traceback (most recent call last):
3838
39 File "tests/exceptions/source/diagnose/chained_both.py", line 27, in <module>
39 File "tests/exceptions/source/diagnose/chained_both.py", line 28, in <module>
4040 context(1, 0)
4141 └ <function context at 0xDEADBEEF>
4242
43 File "tests/exceptions/source/diagnose/chained_both.py", line 23, in context
43 File "tests/exceptions/source/diagnose/chained_both.py", line 24, in context
4444 raise ValueError("Cause error") from e
4545
4646 ValueError: Cause error
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/encoding.py", line 17, in <module>
3 File "tests/exceptions/source/diagnose/encoding.py", line 18, in <module>
44 div()
55 └ <function div at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/encoding.py", line 13, in div
7 File "tests/exceptions/source/diagnose/encoding.py", line 14, in div
88 return _deep("天")
99  └ <function _deep at 0xDEADBEEF>
1010
11 File "tests/exceptions/source/diagnose/encoding.py", line 9, in _deep
11 File "tests/exceptions/source/diagnose/encoding.py", line 10, in _deep
1212 return 1 / val
1313  └ '天'
1414
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/global_variable.py", line 18, in <module>
3 File "tests/exceptions/source/diagnose/global_variable.py", line 19, in <module>
44 func()
55 └ <function func at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/global_variable.py", line 14, in func
7 File "tests/exceptions/source/diagnose/global_variable.py", line 15, in func
88 return 1 / 0 + foo + bar + False
99  │ └ False
1010  └ None
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/indentation_error.py", line 16, in <module>
3 File "tests/exceptions/source/diagnose/indentation_error.py", line 17, in <module>
44 exec(code)
55  └ '\nif True:\n a = 5\n print("foobar") #intentional faulty indentation here.\n b = 7\n'
66
77 File "<string>", line 4
88 print("foobar") #intentional faulty indentation here.
9 ^
109
1110 IndentationError: unexpected indent
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/keyword_argument.py", line 15, in <module>
3 File "tests/exceptions/source/diagnose/keyword_argument.py", line 16, in <module>
44 f(x=y)
55 │ └ 0
66 └ <function f at 0xDEADBEEF>
77
8 File "tests/exceptions/source/diagnose/keyword_argument.py", line 9, in f
8 File "tests/exceptions/source/diagnose/keyword_argument.py", line 10, in f
99 return 1 / x
1010  └ 0
1111
1313
1414 Traceback (most recent call last):
1515
16 File "tests/exceptions/source/diagnose/keyword_argument.py", line 20, in <module>
16 File "tests/exceptions/source/diagnose/keyword_argument.py", line 21, in <module>
1717 f(x=x)
1818 │ └ 0
1919 └ <function f at 0xDEADBEEF>
2020
21 File "tests/exceptions/source/diagnose/keyword_argument.py", line 9, in f
21 File "tests/exceptions/source/diagnose/keyword_argument.py", line 10, in f
2222 return 1 / x
2323  └ 0
2424
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/multilines_repr.py", line 19, in <module>
3 File "tests/exceptions/source/diagnose/multilines_repr.py", line 20, in <module>
44 multiline()
55 └ <function multiline at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/multilines_repr.py", line 15, in multiline
7 File "tests/exceptions/source/diagnose/multilines_repr.py", line 16, in multiline
88 a + b
99 │ └ [[1, 2, 3]
1010 │  [4, 5, 6]
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/no_error_message.py", line 17, in <module>
3 File "tests/exceptions/source/diagnose/no_error_message.py", line 18, in <module>
44 bar()
55 └ <function bar at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/no_error_message.py", line 13, in bar
7 File "tests/exceptions/source/diagnose/no_error_message.py", line 14, in bar
88 foo()
99 └ <function foo at 0xDEADBEEF>
1010
11 File "tests/exceptions/source/diagnose/no_error_message.py", line 9, in foo
11 File "tests/exceptions/source/diagnose/no_error_message.py", line 10, in foo
1212 raise ValueError("")
1313
1414 ValueError
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/parenthesis.py", line 47, in <module>
3 File "tests/exceptions/source/diagnose/parenthesis.py", line 48, in <module>
44 e()
55 └ <function e at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/parenthesis.py", line 43, in e
7 File "tests/exceptions/source/diagnose/parenthesis.py", line 44, in e
88 ) + d(()) + a
99  │ └ 1
1010  └ <function d at 0xDEADBEEF>
1111
12 File "tests/exceptions/source/diagnose/parenthesis.py", line 36, in d
12 File "tests/exceptions/source/diagnose/parenthesis.py", line 37, in d
1313 ; z = (x * y); y = (j or xyz.val * c() \
1414  │ │ │ │ │ │ │ └ <function c at 0xDEADBEEF>
1515  │ │ │ │ │ │ └ 123
2020  │ └ 2
2121  └ 10
2222
23 File "tests/exceptions/source/diagnose/parenthesis.py", line 28, in c
23 File "tests/exceptions/source/diagnose/parenthesis.py", line 29, in c
2424 x.val += 456 and b()
2525 │ │ └ <function b at 0xDEADBEEF>
2626 │ └ 123
2727 └ <__main__.XYZ object at 0xDEADBEEF>
2828
29 File "tests/exceptions/source/diagnose/parenthesis.py", line 22, in b
29 File "tests/exceptions/source/diagnose/parenthesis.py", line 23, in b
3030 foo[("baz")] = bar() + (a(5, baz))
3131 │ │ │ └ 0
3232 │ │ └ <function a at 0xDEADBEEF>
3333 │ └ <class '__main__.XYZ'>
3434 └ {}
3535
36 File "tests/exceptions/source/diagnose/parenthesis.py", line 17, in a
36 File "tests/exceptions/source/diagnose/parenthesis.py", line 18, in a
3737 (a, b, x.val, ) = 12, 15 / c, 17
3838  │ │ │ │ └ 0
3939  │ │ │ └ 9
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/source_multilines.py", line 39, in <module>
3 File "tests/exceptions/source/diagnose/source_multilines.py", line 40, in <module>
44 bug_1(10)
55 └ <function bug_1 at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/source_multilines.py", line 12, in bug_1
7 File "tests/exceptions/source/diagnose/source_multilines.py", line 13, in bug_1
88 """ + n / 0)
99
1010 ZeroDivisionError: division by zero
1111
1212 Traceback (most recent call last):
1313
14 File "tests/exceptions/source/diagnose/source_multilines.py", line 45, in <module>
14 File "tests/exceptions/source/diagnose/source_multilines.py", line 46, in <module>
1515 bug_2(1, string, 3)
1616 │ └ 'multi-lines\n'
1717 └ <function bug_2 at 0xDEADBEEF>
1818
19 File "tests/exceptions/source/diagnose/source_multilines.py", line 16, in bug_2
19 File "tests/exceptions/source/diagnose/source_multilines.py", line 17, in bug_2
2020 return (1 / 0 + a + b + \
2121  │ └ 'multi-lines\n'
2222  └ 1
2525
2626 Traceback (most recent call last):
2727
28 File "tests/exceptions/source/diagnose/source_multilines.py", line 51, in <module>
28 File "tests/exceptions/source/diagnose/source_multilines.py", line 52, in <module>
2929 bug_3(string)
3030 │ └ 'multi-lines\n'
3131 └ <function bug_3 at 0xDEADBEEF>
3232
33 File "tests/exceptions/source/diagnose/source_multilines.py", line 22, in bug_3
33 File "tests/exceptions/source/diagnose/source_multilines.py", line 23, in bug_3
3434 , string, 20 / 0)
3535  └ 'multi-lines\n'
3636
3838
3939 Traceback (most recent call last):
4040
41 File "tests/exceptions/source/diagnose/source_multilines.py", line 57, in <module>
41 File "tests/exceptions/source/diagnose/source_multilines.py", line 58, in <module>
4242 bug_4()
4343 └ <function bug_4 at 0xDEADBEEF>
4444
45 File "tests/exceptions/source/diagnose/source_multilines.py", line 29, in bug_4
45 File "tests/exceptions/source/diagnose/source_multilines.py", line 30, in bug_4
4646 "bar": a / b,
4747  │ └ 0
4848  └ 1
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/source_strings.py", line 13, in <module>
3 File "tests/exceptions/source/diagnose/source_strings.py", line 14, in <module>
44 a + b"prefix" + 'single' + """triple""" + 1 + b
55 │ └ 0
66 └ 0
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/syntax_error.py", line 16, in <module>
3 File "tests/exceptions/source/diagnose/syntax_error.py", line 17, in <module>
44 exec(code)
55  └ '\nif True:\n a = 5\n b = 7 *\n'
66
77 File "<string>", line 4
88 b = 7 *
9 ^
9 ^
1010
1111 SyntaxError: invalid syntax
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 31, in <module>
3 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 32, in <module>
44 e(0)
55 └ <function e at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 27, in e
7 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 28, in e
88 x in [1], x in (1,), x in {1}, x in {1: 1}, d()
99 │ │ │ │ └ <function d at 0xDEADBEEF>
1010 │ │ │ └ 0
1212 │ └ 0
1313 └ 0
1414
15 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 23, in d
15 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 24, in d
1616 min(range(1, 10)), list(), dict(), c(), ...
1717  └ <function c at 0xDEADBEEF>
1818
19 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 19, in c
19 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 20, in c
2020 1, 2.5, 3.0, 0.4, "str", r"rrr", rb"binary", b()
2121  └ <function b at 0xDEADBEEF>
2222
23 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 15, in b
23 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 16, in b
2424 a() or False == None != True
2525 └ <function a at 0xDEADBEEF>
2626
27 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 11, in a
27 File "tests/exceptions/source/diagnose/syntax_highlighting.py", line 12, in a
2828 1 / 0 + 1 * 0 - 1 % 0 // 1**0 @ 1 # Error
2929
3030 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/truncating.py", line 14, in <module>
3 File "tests/exceptions/source/diagnose/truncating.py", line 15, in <module>
44 div()
55 └ <function div at 0xDEADBEEF>
66
7 File "tests/exceptions/source/diagnose/truncating.py", line 10, in div
7 File "tests/exceptions/source/diagnose/truncating.py", line 11, in div
88 return 1 / var
99  └ '9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999...
1010
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/diagnose/unprintable_object.py", line 15, in <module>
3 File "tests/exceptions/source/diagnose/unprintable_object.py", line 16, in <module>
44 obj + 1 / 0
55 └ <unprintable Object object>
66
0 An error occured (1):
0 An error occurred (1):
11 Traceback (most recent call last):
22 File "tests/exceptions/source/others/catch_message.py", line 14, in <module>
33 a()
44 File "tests/exceptions/source/others/catch_message.py", line 10, in a
55 1 / 0
66 ZeroDivisionError: division by zero
7 An error occured (2):
7 An error occurred (2):
88 Traceback (most recent call last):
99 File "tests/exceptions/source/others/catch_message.py", line 17, in <module>
1010 a()
00
11 File "<string>", line 1
22 foo =
3 ^
3 ^
44 SyntaxError: invalid syntax
55
66 File "<string>", line 1
77 foo =
8 ^
8 ^
99 SyntaxError: invalid syntax
1010
1111 File "<string>", line 1
1212 foo =
13 ^
13 ^
1414 SyntaxError: invalid syntax
1515
1616 File "<string>", line 1
1717 foo =
18 ^
18 ^
1919 SyntaxError: invalid syntax
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 18, in <module>
3 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 20, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/assertion_from_lib.py", line 13, in test
7 > File "tests/exceptions/source/ownership/assertion_from_lib.py", line 15, in test
88 assertionerror(a, b)
99 │ │ └ 2
1010 │ └ 1
1919
2020 Traceback (most recent call last):
2121
22 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 13, in test
22 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 15, in test
2323 assertionerror(a, b)
2424 │ │ └ 2
2525 │ └ 1
3333 AssertionError: assert x == y
3434
3535 Traceback (most recent call last):
36 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 20, in <module>
36 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 22, in <module>
3737 test(backtrace=True, colorize=True, diagnose=False)
38 > File "tests/exceptions/source/ownership/assertion_from_lib.py", line 13, in test
38 > File "tests/exceptions/source/ownership/assertion_from_lib.py", line 15, in test
3939 assertionerror(a, b)
4040 File "/usr/lib/python/somelib/__init__.py", line 22, in assertionerror
4141 assert x == y
4242 AssertionError
4343
4444 Traceback (most recent call last):
45 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 13, in test
45 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 15, in test
4646 assertionerror(a, b)
4747 File "/usr/lib/python/somelib/__init__.py", line 22, in assertionerror
4848 assert x == y
4949 AssertionError
5050
5151 Traceback (most recent call last):
52 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 13, in test
52 File "tests/exceptions/source/ownership/assertion_from_lib.py", line 15, in test
5353 assertionerror(a, b)
5454 File "/usr/lib/python/somelib/__init__.py", line 22, in assertionerror
5555 assert x == y
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/assertion_from_local.py", line 18, in <module>
3 File "tests/exceptions/source/ownership/assertion_from_local.py", line 20, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/assertion_from_local.py", line 13, in test
7 > File "tests/exceptions/source/ownership/assertion_from_local.py", line 15, in test
88 assert a == b
99  │ └ 2
1010  └ 1
1313
1414 Traceback (most recent call last):
1515
16 File "tests/exceptions/source/ownership/assertion_from_local.py", line 13, in test
16 File "tests/exceptions/source/ownership/assertion_from_local.py", line 15, in test
1717 assert a == b
1818  │ └ 2
1919  └ 1
2121 AssertionError: assert a == b
2222
2323 Traceback (most recent call last):
24 File "tests/exceptions/source/ownership/assertion_from_local.py", line 20, in <module>
24 File "tests/exceptions/source/ownership/assertion_from_local.py", line 22, in <module>
2525 test(backtrace=True, colorize=True, diagnose=False)
26 > File "tests/exceptions/source/ownership/assertion_from_local.py", line 13, in test
26 > File "tests/exceptions/source/ownership/assertion_from_local.py", line 15, in test
2727 assert a == b
2828 AssertionError
2929
3030 Traceback (most recent call last):
31 File "tests/exceptions/source/ownership/assertion_from_local.py", line 13, in test
31 File "tests/exceptions/source/ownership/assertion_from_local.py", line 15, in test
3232 assert a == b
3333 AssertionError
3434
3535 Traceback (most recent call last):
36 File "tests/exceptions/source/ownership/assertion_from_local.py", line 13, in test
36 File "tests/exceptions/source/ownership/assertion_from_local.py", line 15, in test
3737 assert a == b
3838 AssertionError
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/callback.py", line 20, in <module>
3 File "tests/exceptions/source/ownership/callback.py", line 22, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/callback.py", line 15, in test
7 > File "tests/exceptions/source/ownership/callback.py", line 17, in test
88 callme(callback)
99 │ └ <function test.<locals>.callback at 0xDEADBEEF>
1010 └ <function callme at 0xDEADBEEF>
1313 callback()
1414 └ <function test.<locals>.callback at 0xDEADBEEF>
1515
16 File "tests/exceptions/source/ownership/callback.py", line 12, in callback
16 File "tests/exceptions/source/ownership/callback.py", line 14, in callback
1717 divide(1, 0)
1818 └ <function divide at 0xDEADBEEF>
1919
2626
2727 Traceback (most recent call last):
2828
29 File "tests/exceptions/source/ownership/callback.py", line 15, in test
29 File "tests/exceptions/source/ownership/callback.py", line 17, in test
3030 callme(callback)
3131 │ └ <function test.<locals>.callback at 0xDEADBEEF>
3232 └ <function callme at 0xDEADBEEF>
3535 callback()
3636 └ <function test.<locals>.callback at 0xDEADBEEF>
3737
38 File "tests/exceptions/source/ownership/callback.py", line 12, in callback
38 File "tests/exceptions/source/ownership/callback.py", line 14, in callback
3939 divide(1, 0)
4040 └ <function divide at 0xDEADBEEF>
4141
4747 ZeroDivisionError: division by zero
4848
4949 Traceback (most recent call last):
50 File "tests/exceptions/source/ownership/callback.py", line 22, in <module>
50 File "tests/exceptions/source/ownership/callback.py", line 24, in <module>
5151 test(backtrace=True, colorize=True, diagnose=False)
52 > File "tests/exceptions/source/ownership/callback.py", line 15, in test
52 > File "tests/exceptions/source/ownership/callback.py", line 17, in test
5353 callme(callback)
5454 File "/usr/lib/python/somelib/__init__.py", line 10, in callme
5555 callback()
56 File "tests/exceptions/source/ownership/callback.py", line 12, in callback
56 File "tests/exceptions/source/ownership/callback.py", line 14, in callback
5757 divide(1, 0)
5858 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
5959 x / y
6060 ZeroDivisionError: division by zero
6161
6262 Traceback (most recent call last):
63 File "tests/exceptions/source/ownership/callback.py", line 15, in test
63 File "tests/exceptions/source/ownership/callback.py", line 17, in test
6464 callme(callback)
6565 File "/usr/lib/python/somelib/__init__.py", line 10, in callme
6666 callback()
67 File "tests/exceptions/source/ownership/callback.py", line 12, in callback
67 File "tests/exceptions/source/ownership/callback.py", line 14, in callback
6868 divide(1, 0)
6969 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
7070 x / y
7171 ZeroDivisionError: division by zero
7272
7373 Traceback (most recent call last):
74 File "tests/exceptions/source/ownership/callback.py", line 15, in test
74 File "tests/exceptions/source/ownership/callback.py", line 17, in test
7575 callme(callback)
7676 File "/usr/lib/python/somelib/__init__.py", line 10, in callme
7777 callback()
78 File "tests/exceptions/source/ownership/callback.py", line 12, in callback
78 File "tests/exceptions/source/ownership/callback.py", line 14, in callback
7979 divide(1, 0)
8080 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
8181 x / y
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/catch_decorator.py", line 18, in <module>
3 File "tests/exceptions/source/ownership/catch_decorator.py", line 20, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in test
7 > File "tests/exceptions/source/ownership/catch_decorator.py", line 17, in test
88 foo()
99 └ <function test.<locals>.foo at 0xDEADBEEF>
1010
11 File "tests/exceptions/source/ownership/catch_decorator.py", line 13, in foo
11 File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in foo
1212 divide(1, 0)
1313 └ <function divide at 0xDEADBEEF>
1414
2121
2222 Traceback (most recent call last):
2323
24 File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in test
24 File "tests/exceptions/source/ownership/catch_decorator.py", line 17, in test
2525 foo()
2626 └ <function test.<locals>.foo at 0xDEADBEEF>
2727
28 File "tests/exceptions/source/ownership/catch_decorator.py", line 13, in foo
28 File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in foo
2929 divide(1, 0)
3030 └ <function divide at 0xDEADBEEF>
3131
3737 ZeroDivisionError: division by zero
3838
3939 Traceback (most recent call last):
40 File "tests/exceptions/source/ownership/catch_decorator.py", line 20, in <module>
40 File "tests/exceptions/source/ownership/catch_decorator.py", line 22, in <module>
4141 test(backtrace=True, colorize=True, diagnose=False)
42 > File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in test
42 > File "tests/exceptions/source/ownership/catch_decorator.py", line 17, in test
4343 foo()
44 File "tests/exceptions/source/ownership/catch_decorator.py", line 13, in foo
44 File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in foo
4545 divide(1, 0)
4646 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
4747 x / y
4848 ZeroDivisionError: division by zero
4949
5050 Traceback (most recent call last):
51 File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in test
51 File "tests/exceptions/source/ownership/catch_decorator.py", line 17, in test
5252 foo()
53 File "tests/exceptions/source/ownership/catch_decorator.py", line 13, in foo
53 File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in foo
5454 divide(1, 0)
5555 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
5656 x / y
5757 ZeroDivisionError: division by zero
5858
5959 Traceback (most recent call last):
60 File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in test
60 File "tests/exceptions/source/ownership/catch_decorator.py", line 17, in test
6161 foo()
62 File "tests/exceptions/source/ownership/catch_decorator.py", line 13, in foo
62 File "tests/exceptions/source/ownership/catch_decorator.py", line 15, in foo
6363 divide(1, 0)
6464 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
6565 x / y
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 18, in <module>
3 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 20, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 15, in test
7 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 17, in test
88 callme(callback)
99 │ └ <function test.<locals>.callback at 0xDEADBEEF>
1010 └ <function callme at 0xDEADBEEF>
1313 callback()
1414 └ <function test.<locals>.callback at 0xDEADBEEF>
1515
16 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 13, in callback
16 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 15, in callback
1717 divide(1, 0)
1818 └ <function divide at 0xDEADBEEF>
1919
3030 callback()
3131 └ <function test.<locals>.callback at 0xDEADBEEF>
3232
33 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 13, in callback
33 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 15, in callback
3434 divide(1, 0)
3535 └ <function divide at 0xDEADBEEF>
3636
4242 ZeroDivisionError: division by zero
4343
4444 Traceback (most recent call last):
45 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 20, in <module>
45 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 22, in <module>
4646 test(backtrace=True, colorize=True, diagnose=False)
47 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 15, in test
47 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 17, in test
4848 callme(callback)
4949 > File "/usr/lib/python/somelib/__init__.py", line 10, in callme
5050 callback()
51 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 13, in callback
51 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 15, in callback
5252 divide(1, 0)
5353 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
5454 x / y
5757 Traceback (most recent call last):
5858 File "/usr/lib/python/somelib/__init__.py", line 10, in callme
5959 callback()
60 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 13, in callback
60 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 15, in callback
6161 divide(1, 0)
6262 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
6363 x / y
6666 Traceback (most recent call last):
6767 File "/usr/lib/python/somelib/__init__.py", line 10, in callme
6868 callback()
69 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 13, in callback
69 File "tests/exceptions/source/ownership/catch_decorator_from_lib.py", line 15, in callback
7070 divide(1, 0)
7171 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
7272 x / y
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/decorated_callback.py", line 19, in <module>
3 File "tests/exceptions/source/ownership/decorated_callback.py", line 21, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 File "tests/exceptions/source/ownership/decorated_callback.py", line 16, in test
7 File "tests/exceptions/source/ownership/decorated_callback.py", line 18, in test
88 callme(callback)
99 │ └ <function test.<locals>.callback at 0xDEADBEEF>
1010 └ <function callme at 0xDEADBEEF>
1313 callback()
1414 └ <function test.<locals>.callback at 0xDEADBEEF>
1515
16 File "tests/exceptions/source/ownership/decorated_callback.py", line 14, in callback
16 File "tests/exceptions/source/ownership/decorated_callback.py", line 16, in callback
1717 a / b
1818 │ └ 0
1919 └ 1
2626 callback()
2727 └ <function test.<locals>.callback at 0xDEADBEEF>
2828
29 File "tests/exceptions/source/ownership/decorated_callback.py", line 14, in callback
29 File "tests/exceptions/source/ownership/decorated_callback.py", line 16, in callback
3030 a / b
3131 │ └ 0
3232 └ 1
3434 ZeroDivisionError: division by zero
3535
3636 Traceback (most recent call last):
37 File "tests/exceptions/source/ownership/decorated_callback.py", line 21, in <module>
37 File "tests/exceptions/source/ownership/decorated_callback.py", line 23, in <module>
3838 test(backtrace=True, colorize=True, diagnose=False)
39 File "tests/exceptions/source/ownership/decorated_callback.py", line 16, in test
39 File "tests/exceptions/source/ownership/decorated_callback.py", line 18, in test
4040 callme(callback)
4141 > File "/usr/lib/python/somelib/__init__.py", line 10, in callme
4242 callback()
43 File "tests/exceptions/source/ownership/decorated_callback.py", line 14, in callback
43 File "tests/exceptions/source/ownership/decorated_callback.py", line 16, in callback
4444 a / b
4545 ZeroDivisionError: division by zero
4646
4747 Traceback (most recent call last):
4848 File "/usr/lib/python/somelib/__init__.py", line 10, in callme
4949 callback()
50 File "tests/exceptions/source/ownership/decorated_callback.py", line 14, in callback
50 File "tests/exceptions/source/ownership/decorated_callback.py", line 16, in callback
5151 a / b
5252 ZeroDivisionError: division by zero
5353
5454 Traceback (most recent call last):
5555 File "/usr/lib/python/somelib/__init__.py", line 10, in callme
5656 callback()
57 File "tests/exceptions/source/ownership/decorated_callback.py", line 14, in callback
57 File "tests/exceptions/source/ownership/decorated_callback.py", line 16, in callback
5858 a / b
5959 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/direct.py", line 17, in <module>
3 File "tests/exceptions/source/ownership/direct.py", line 19, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/direct.py", line 12, in test
7 > File "tests/exceptions/source/ownership/direct.py", line 14, in test
88 divide(10, 0)
99 └ <function divide at 0xDEADBEEF>
1010
1717
1818 Traceback (most recent call last):
1919
20 File "tests/exceptions/source/ownership/direct.py", line 12, in test
20 File "tests/exceptions/source/ownership/direct.py", line 14, in test
2121 divide(10, 0)
2222 └ <function divide at 0xDEADBEEF>
2323
2929 ZeroDivisionError: division by zero
3030
3131 Traceback (most recent call last):
32 File "tests/exceptions/source/ownership/direct.py", line 19, in <module>
32 File "tests/exceptions/source/ownership/direct.py", line 21, in <module>
3333 test(backtrace=True, colorize=True, diagnose=False)
34 > File "tests/exceptions/source/ownership/direct.py", line 12, in test
34 > File "tests/exceptions/source/ownership/direct.py", line 14, in test
3535 divide(10, 0)
3636 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
3737 x / y
3838 ZeroDivisionError: division by zero
3939
4040 Traceback (most recent call last):
41 File "tests/exceptions/source/ownership/direct.py", line 12, in test
41 File "tests/exceptions/source/ownership/direct.py", line 14, in test
4242 divide(10, 0)
4343 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
4444 x / y
4545 ZeroDivisionError: division by zero
4646
4747 Traceback (most recent call last):
48 File "tests/exceptions/source/ownership/direct.py", line 12, in test
48 File "tests/exceptions/source/ownership/direct.py", line 14, in test
4949 divide(10, 0)
5050 File "/usr/lib/python/somelib/__init__.py", line 2, in divide
5151 x / y
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/indirect.py", line 17, in <module>
3 File "tests/exceptions/source/ownership/indirect.py", line 19, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/indirect.py", line 12, in test
7 > File "tests/exceptions/source/ownership/indirect.py", line 14, in test
88 divide_indirect(10, 0)
99 └ <function divide_indirect at 0xDEADBEEF>
1010
2222
2323 Traceback (most recent call last):
2424
25 File "tests/exceptions/source/ownership/indirect.py", line 12, in test
25 File "tests/exceptions/source/ownership/indirect.py", line 14, in test
2626 divide_indirect(10, 0)
2727 └ <function divide_indirect at 0xDEADBEEF>
2828
3939 ZeroDivisionError: division by zero
4040
4141 Traceback (most recent call last):
42 File "tests/exceptions/source/ownership/indirect.py", line 19, in <module>
42 File "tests/exceptions/source/ownership/indirect.py", line 21, in <module>
4343 test(backtrace=True, colorize=True, diagnose=False)
44 > File "tests/exceptions/source/ownership/indirect.py", line 12, in test
44 > File "tests/exceptions/source/ownership/indirect.py", line 14, in test
4545 divide_indirect(10, 0)
4646 File "/usr/lib/python/somelib/__init__.py", line 6, in divide_indirect
4747 divide(a, b)
5050 ZeroDivisionError: division by zero
5151
5252 Traceback (most recent call last):
53 File "tests/exceptions/source/ownership/indirect.py", line 12, in test
53 File "tests/exceptions/source/ownership/indirect.py", line 14, in test
5454 divide_indirect(10, 0)
5555 File "/usr/lib/python/somelib/__init__.py", line 6, in divide_indirect
5656 divide(a, b)
5959 ZeroDivisionError: division by zero
6060
6161 Traceback (most recent call last):
62 File "tests/exceptions/source/ownership/indirect.py", line 12, in test
62 File "tests/exceptions/source/ownership/indirect.py", line 14, in test
6363 divide_indirect(10, 0)
6464 File "/usr/lib/python/somelib/__init__.py", line 6, in divide_indirect
6565 divide(a, b)
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/string_lib.py", line 17, in <module>
3 File "tests/exceptions/source/ownership/string_lib.py", line 19, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/string_lib.py", line 12, in test
7 > File "tests/exceptions/source/ownership/string_lib.py", line 14, in test
88 execute()
99 └ <function execute at 0xDEADBEEF>
1010
2020
2121 Traceback (most recent call last):
2222
23 File "tests/exceptions/source/ownership/string_lib.py", line 12, in test
23 File "tests/exceptions/source/ownership/string_lib.py", line 14, in test
2424 execute()
2525 └ <function execute at 0xDEADBEEF>
2626
3535 ZeroDivisionError: division by zero
3636
3737 Traceback (most recent call last):
38 File "tests/exceptions/source/ownership/string_lib.py", line 19, in <module>
38 File "tests/exceptions/source/ownership/string_lib.py", line 21, in <module>
3939 test(backtrace=True, colorize=True, diagnose=False)
40 > File "tests/exceptions/source/ownership/string_lib.py", line 12, in test
40 > File "tests/exceptions/source/ownership/string_lib.py", line 14, in test
4141 execute()
4242 File "/usr/lib/python/somelib/__init__.py", line 14, in execute
4343 exec("divide(1, 0)")
4747 ZeroDivisionError: division by zero
4848
4949 Traceback (most recent call last):
50 File "tests/exceptions/source/ownership/string_lib.py", line 12, in test
50 File "tests/exceptions/source/ownership/string_lib.py", line 14, in test
5151 execute()
5252 File "/usr/lib/python/somelib/__init__.py", line 14, in execute
5353 exec("divide(1, 0)")
5757 ZeroDivisionError: division by zero
5858
5959 Traceback (most recent call last):
60 File "tests/exceptions/source/ownership/string_lib.py", line 12, in test
60 File "tests/exceptions/source/ownership/string_lib.py", line 14, in test
6161 execute()
6262 File "/usr/lib/python/somelib/__init__.py", line 14, in execute
6363 exec("divide(1, 0)")
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/string_source.py", line 18, in <module>
3 File "tests/exceptions/source/ownership/string_source.py", line 19, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/string_source.py", line 13, in test
7 > File "tests/exceptions/source/ownership/string_source.py", line 14, in test
88 exec("foo()")
99
1010 File "<string>", line 1, in <module>
1111
12 File "tests/exceptions/source/ownership/string_source.py", line 10, in foo
12 File "tests/exceptions/source/ownership/string_source.py", line 11, in foo
1313 1 / 0
1414
1515 ZeroDivisionError: division by zero
1616
1717 Traceback (most recent call last):
1818
19 File "tests/exceptions/source/ownership/string_source.py", line 13, in test
19 File "tests/exceptions/source/ownership/string_source.py", line 14, in test
2020 exec("foo()")
2121
2222 File "<string>", line 1, in <module>
2323
24 File "tests/exceptions/source/ownership/string_source.py", line 10, in foo
24 File "tests/exceptions/source/ownership/string_source.py", line 11, in foo
2525 1 / 0
2626
2727 ZeroDivisionError: division by zero
2828
2929 Traceback (most recent call last):
30 File "tests/exceptions/source/ownership/string_source.py", line 20, in <module>
30 File "tests/exceptions/source/ownership/string_source.py", line 21, in <module>
3131 test(backtrace=True, colorize=True, diagnose=False)
32 > File "tests/exceptions/source/ownership/string_source.py", line 13, in test
32 > File "tests/exceptions/source/ownership/string_source.py", line 14, in test
3333 exec("foo()")
3434 File "<string>", line 1, in <module>
35 File "tests/exceptions/source/ownership/string_source.py", line 10, in foo
35 File "tests/exceptions/source/ownership/string_source.py", line 11, in foo
3636 1 / 0
3737 ZeroDivisionError: division by zero
3838
3939 Traceback (most recent call last):
40 File "tests/exceptions/source/ownership/string_source.py", line 13, in test
40 File "tests/exceptions/source/ownership/string_source.py", line 14, in test
4141 exec("foo()")
4242 File "<string>", line 1, in <module>
43 File "tests/exceptions/source/ownership/string_source.py", line 10, in foo
43 File "tests/exceptions/source/ownership/string_source.py", line 11, in foo
4444 1 / 0
4545 ZeroDivisionError: division by zero
4646
4747 Traceback (most recent call last):
48 File "tests/exceptions/source/ownership/string_source.py", line 13, in test
48 File "tests/exceptions/source/ownership/string_source.py", line 14, in test
4949 exec("foo()")
5050 File "<string>", line 1, in <module>
51 File "tests/exceptions/source/ownership/string_source.py", line 10, in foo
51 File "tests/exceptions/source/ownership/string_source.py", line 11, in foo
5252 1 / 0
5353 ZeroDivisionError: division by zero
00
11 Traceback (most recent call last):
22
3 File "tests/exceptions/source/ownership/syntaxerror.py", line 17, in <module>
3 File "tests/exceptions/source/ownership/syntaxerror.py", line 19, in <module>
44 test(backtrace=True, colorize=True, diagnose=True)
55 └ <function test at 0xDEADBEEF>
66
7 > File "tests/exceptions/source/ownership/syntaxerror.py", line 12, in test
7 > File "tests/exceptions/source/ownership/syntaxerror.py", line 14, in test
88 syntaxerror()
99 └ <function syntaxerror at 0xDEADBEEF>
1010
1212 exec("foo =")
1313 File "<string>", line 1
1414 foo =
15 ^
15 ^
1616
1717 SyntaxError: invalid syntax
1818
1919 Traceback (most recent call last):
2020
21 File "tests/exceptions/source/ownership/syntaxerror.py", line 12, in test
21 File "tests/exceptions/source/ownership/syntaxerror.py", line 14, in test
2222 syntaxerror()
2323 └ <function syntaxerror at 0xDEADBEEF>
2424
2626 exec("foo =")
2727 File "<string>", line 1
2828 foo =
29 ^
29 ^
3030
3131 SyntaxError: invalid syntax
3232
3333 Traceback (most recent call last):
34 File "tests/exceptions/source/ownership/syntaxerror.py", line 19, in <module>
34 File "tests/exceptions/source/ownership/syntaxerror.py", line 21, in <module>
3535 test(backtrace=True, colorize=True, diagnose=False)
36 > File "tests/exceptions/source/ownership/syntaxerror.py", line 12, in test
36 > File "tests/exceptions/source/ownership/syntaxerror.py", line 14, in test
3737 syntaxerror()
3838 File "/usr/lib/python/somelib/__init__.py", line 18, in syntaxerror
3939 exec("foo =")
4040 File "<string>", line 1
4141 foo =
42 ^
42 ^
4343 SyntaxError: invalid syntax
4444
4545 Traceback (most recent call last):
46 File "tests/exceptions/source/ownership/syntaxerror.py", line 12, in test
46 File "tests/exceptions/source/ownership/syntaxerror.py", line 14, in test
4747 syntaxerror()
4848 File "/usr/lib/python/somelib/__init__.py", line 18, in syntaxerror
4949 exec("foo =")
5050 File "<string>", line 1
5151 foo =
52 ^
52 ^
5353 SyntaxError: invalid syntax
5454
5555 Traceback (most recent call last):
56 File "tests/exceptions/source/ownership/syntaxerror.py", line 12, in test
56 File "tests/exceptions/source/ownership/syntaxerror.py", line 14, in test
5757 syntaxerror()
5858 File "/usr/lib/python/somelib/__init__.py", line 18, in syntaxerror
5959 exec("foo =")
6060 File "<string>", line 1
6161 foo =
62 ^
62 ^
6363 SyntaxError: invalid syntax
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1 from collections import namedtuple
2
13 from loguru import logger
2 from collections import namedtuple
34
45 logger.remove()
56 logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False)
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 # fmt: off
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 # fmt: off
00 import sys
1
12 from loguru import logger
23
34 # fmt: off
00 import sys
1
12 from loguru import logger
23
34 # fmt: off
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 # fmt: off
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
23
34 logger.remove()
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="{message}", diagnose=False, backtrace=False, colorize=False)
99 1 / 0
1010
1111
12 with logger.catch(message="An error occured (1):"):
12 with logger.catch(message="An error occurred (1):"):
1313 a()
1414
15 a = logger.catch(message="An error occured (2):")(a)
15 a = logger.catch(message="An error occurred (2):")(a)
1616 a()
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=True, backtrace=True, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="{message}", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="{message}", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
00 import sys
1
12 from loguru import logger
2
33
44 logger.remove()
55 logger.add(sys.stderr, format="", diagnose=False, backtrace=False, colorize=False)
0 import os, sys, sysconfig
1
0 import os
1 import sys
2 import sysconfig
23
34 usersite = os.path.abspath(os.path.join(os.path.dirname(__file__), "usersite"))
45 sys.path.append(usersite)
0 import sys
1
02 import _init
1 import sys
23 from somelib import assertionerror
4
35 from loguru import logger
46
57
0 import sys
1
02 import _init
1 import sys
23 from somelib import assertionerror
4
35 from loguru import logger
46
57
0 import sys
1
02 import _init
1 import sys
23 from somelib import callme, divide
4
35 from loguru import logger
46
57
0 import sys
1
02 import _init
1 import sys
23 from somelib import divide
4
35 from loguru import logger
46
57
0 import sys
1
02 import _init
1 import sys
23 from somelib import callme, divide
4
35 from loguru import logger
46
57
0 import sys
1
02 import _init
1 import sys
23 from somelib import callme, divide
4
35 from loguru import logger
46
57
0 import sys
1
02 import _init
1 import sys
23 from somelib import divide
4
35 from loguru import logger
46
57
0 import sys
1
02 import _init
1 import sys
23 from somelib import divide_indirect
4
35 from loguru import logger
46
57
0 import sys
1
02 import _init
1 import sys
23 from somelib import execute
4
35 from loguru import logger
46
57
00 import sys
1
12 from loguru import logger
23
34
0 import sys
1
02 import _init
1 import sys
23 from somelib import syntaxerror
4
35 from loguru import logger
46
57
00 import pytest
1
12 from loguru import logger
23
34
7576
7677
7778 def test_multiple_activations():
78 n = lambda: len(logger._core.activation_list)
79 def n():
80 return len(logger._core.activation_list)
7981
8082 assert n() == 0
8183 logger.enable("")
00 from loguru import logger
1
21
32 # See "test_catch_exceptions.py" for extended testing
43
76 logger.add(writer, format="{message}", backtrace=True)
87 try:
98 1 / 0
10 except:
9 except Exception:
1110 logger.exception("")
1211 result_with = writer.read().strip()
1312
1716 logger.add(writer, format="{message}", backtrace=False)
1817 try:
1918 1 / 0
20 except:
19 except Exception:
2120 logger.exception("")
2221 result_without = writer.read().strip()
2322
0 import re
01 import sys
2 import time
3
14 import pytest
5
26 from loguru import logger
3 import loguru
4 import re
5 import time
7
8 from .conftest import default_threading_excepthook
69
710
811 def broken_sink(m):
131134
132135 logger.add(broken_sink, format="{message}", enqueue=True, catch=False)
133136
134 logger.info("A")
135 logger.info("B")
136 time.sleep(0.1)
137 with default_threading_excepthook():
138 logger.info("A")
139 logger.info("B")
140 time.sleep(0.1)
141
137142 assert called == 1
0 import pytest
10 import os
21 import sys
2 from unittest.mock import MagicMock
3
4 import pytest
5
36 import loguru
4 from unittest.mock import MagicMock
57 from loguru import logger
8
69 from .conftest import parse
710
811
66 logger.add(writer, format="{message}", diagnose=True)
77 try:
88 1 / 0
9 except:
9 except Exception:
1010 logger.exception("")
1111 result_with = writer.read().strip()
1212
1616 logger.add(writer, format="{message}", diagnose=False)
1717 try:
1818 1 / 0
19 except:
19 except Exception:
2020 logger.exception("")
2121 result_without = writer.read().strip()
2222
0 from loguru import logger
1 import pytest
2 import time
0 import pickle
31 import re
42 import sys
5 import pickle
3 import time
4
5 import pytest
6
7 from loguru import logger
8
9 from .conftest import default_threading_excepthook
610
711
812 class NotPicklable:
130134 logger.remove()
131135
132136 out, err = capsys.readouterr()
133 lines = err.strip().splitlines()
134137 assert writer.read() == "It's fine\n"
135138 assert out == ""
136139 assert err == ""
139142 def test_not_caught_exception_queue_get(writer, capsys):
140143 logger.add(writer, enqueue=True, catch=False, format="{message}")
141144
142 logger.info("It's fine")
143 logger.bind(broken=NotUnpicklable()).info("Bye bye...")
144 logger.info("It's not fine")
145 logger.remove()
145 with default_threading_excepthook():
146 logger.info("It's fine")
147 logger.bind(broken=NotUnpicklable()).info("Bye bye...")
148 logger.info("It's not fine")
149 logger.remove()
146150
147151 out, err = capsys.readouterr()
148152 lines = err.strip().splitlines()
155159 def test_not_caught_exception_sink_write(capsys):
156160 logger.add(NotWritable(), enqueue=True, catch=False, format="{message}")
157161
158 logger.info("It's fine")
159 logger.bind(fail=True).info("Bye bye...")
160 logger.info("It's not fine")
161 logger.remove()
162 with default_threading_excepthook():
163 logger.info("It's fine")
164 logger.bind(fail=True).info("Bye bye...")
165 logger.info("It's not fine")
166 logger.remove()
162167
163168 out, err = capsys.readouterr()
164169 lines = err.strip().splitlines()
00 import pytest
1
12 from loguru import logger
23
34
00 import pytest
1
12 from loguru import logger
23
34
0 import io
1
02 import pytest
3
14 from loguru import logger
2 import io
35
46
57 def test_file_mode_a(tmpdir):
00 import pytest
1
12 from loguru import logger
23
34
00 import json
11 import sys
2
23 from loguru import logger
34
45
00 import asyncio
1 import logging
2 import os
13 import pathlib
24 import sys
3 import os
4 import logging
5
6 import pytest
7
58 from loguru import logger
6 import pytest
79
810 message = "test message"
911 expected = message + "\n"
7375 @repetitions
7476 def test_function_sink(rep):
7577 a = []
76 func = lambda log_message: a.append(log_message)
78
79 def func(log_message):
80 a.append(log_message)
81
7782 log(func, rep)
7883 assert a == [expected] * rep
7984
00 import pytest
1 from colorama import Style as S, Fore as F, Back as B
1 from colorama import Back as B
2 from colorama import Fore as F
3 from colorama import Style as S
4
25 from .conftest import parse
36
47
00 import pytest
1 from colorama import Style as S, Fore as F, Back as B
1 from colorama import Back as B
2 from colorama import Fore as F
3 from colorama import Style as S
4
25 from .conftest import parse
36
47
00 import pytest
1
12 from loguru import logger
23
34
00 import sys
1
12 import pytest
3
24 from loguru import logger
35
46
0 import loguru
0 import asyncio
1 import sys
2 import threading
3
4 import pytest
5
16 from loguru import logger
2 import threading
3 import asyncio
4 import importlib
5 import sys
6 import pytest
77
88
99 def test_contextualize(writer):
00 import asyncio
1 import logging
2 import multiprocessing
3 import re
14 import sys
5 import threading
6
27 import pytest
3 import logging
8
49 import loguru
5 import time
6 import threading
7 import os
8 import re
9 import multiprocessing
1010 from loguru import logger
1111
1212
0 import datetime
1 import re
2 import sys
3 import time
4
05 import pytest
1 import datetime
2 import time
6
37 import loguru
48 from loguru import logger
5 import sys
6 import re
79
810 if sys.version_info < (3, 6):
911 UTC_NAME = "UTC+00:00"
0 import copy
1
02 from loguru import logger
1 import copy
23
34
45 def print_(message):
00 import pytest
1
12 from loguru._defaults import env
23
34
1213 def test_bool_positive(value, monkeypatch):
1314 key = "VALID_BOOL_POS"
1415 monkeypatch.setenv(key, value)
15 assert env(key, bool) == True
16 assert env(key, bool) is True
1617
1718
1819 @pytest.mark.parametrize("value", ["NO", "0", "false"])
1920 def test_bool_negative(value, monkeypatch):
2021 key = "VALID_BOOL_NEG"
2122 monkeypatch.setenv(key, value)
22 assert env(key, bool) == False
23 assert env(key, bool) is False
2324
2425
2526 def test_int(monkeypatch):
88
99 def normalize(exception):
1010 """Normalize exception output for reproducible test cases"""
11 if os.name:
11 if os.name == "nt":
1212 exception = re.sub(
1313 r'File[^"]+"[^"]+\.py[^"]*"', lambda m: m.group().replace("\\", "/"), exception
1414 )
1515 exception = re.sub(r"(\r\n|\r|\n)", "\n", exception)
16
17 if sys.version_info >= (3, 9, 0):
18
19 def fix_filepath(match):
20 filepath = match.group(1)
21 pattern = (
22 r'((?:\x1b\[[0-9]*m)+)([^"]+?)((?:\x1b\[[0-9]*m)+)([^"]+?)((?:\x1b\[[0-9]*m)+)'
23 )
24 match = re.match(pattern, filepath)
25 start_directory = os.path.dirname(os.path.dirname(__file__))
26 if match:
27 groups = list(match.groups())
28 groups[1] = os.path.relpath(os.path.abspath(groups[1]), start_directory) + "/"
29 relpath = "".join(groups)
30 else:
31 relpath = os.path.relpath(os.path.abspath(filepath), start_directory)
32 return 'File "%s"' % relpath
33
34 exception = re.sub(
35 r'File "([^"]+\.py[^"]*)"',
36 fix_filepath,
37 exception,
38 )
39
40 if sys.version_info < (3, 9, 0):
41 if "SyntaxError" in exception:
42 exception = re.sub(r"(\n *)(\^ *\n)", r"\1 \2", exception)
43 elif "IndentationError" in exception:
44 exception = re.sub(r"\n *\^ *\n", "\n", exception)
1645
1746 exception = re.sub(
1847 r'"[^"]*/somelib/__init__.py"', '"/usr/lib/python/somelib/__init__.py"', exception
0 import pytest
0 import datetime
11 import os
22 import sys
3 import threading
4 import time
5
6 import pytest
7
38 import loguru
49 from loguru import logger
5 import datetime
6 import threading
7 import time
810
911
1012 @pytest.mark.parametrize(
7880 j = logger.add(str(tmpdir.join("test.log")), compression="tar.gz")
7981 logger.debug("test")
8082
81 filesink = next(iter(logger._core.handlers.values()))._sink
8283 monkeypatch.setattr(loguru._file_sink, "get_ctime", creation_time)
8384
8485 logger.remove(j)
0 import re
1 import time
2
03 from loguru import logger
1 import time
2 import re
34
45
56 def test_file_not_delayed(tmpdir):
0 import pytest
10 import datetime
21 import os
2
3 import pytest
4
35 from loguru import logger
46
57
0 import pytest
0 import builtins
11 import datetime
22 import importlib
33 import os
4 import pathlib
45 import re
56 import sys
7 import tempfile
68 import time
7 import tempfile
8 import pathlib
9 import platform
10 import builtins
11 from collections import namedtuple
129 from unittest.mock import MagicMock, PropertyMock
10
11 import pytest
12
1313 import loguru
1414 from loguru import logger
1515
127127
128128
129129 def test_renaming(tmpdir):
130 i = logger.add(str(tmpdir.join("file.log")), rotation=0, format="{message}")
130 logger.add(str(tmpdir.join("file.log")), rotation=0, format="{message}")
131131
132132 time.sleep(0.1)
133133 logger.debug("a")
153153
154154 def test_no_renaming(monkeypatch_date, tmpdir):
155155 monkeypatch_date(2018, 1, 1, 0, 0, 0, 0)
156 i = logger.add(str(tmpdir.join("file_{time}.log")), rotation=0, format="{message}")
156 logger.add(str(tmpdir.join("file_{time}.log")), rotation=0, format="{message}")
157157
158158 monkeypatch_date(2019, 1, 1, 0, 0, 0, 0)
159159 logger.debug("a")
195195 @pytest.mark.parametrize(
196196 "when, hours",
197197 [
198 # hours = [Should not trigger, should trigger, should not trigger, should trigger, should trigger]
198 # hours = [
199 # Should not trigger, should trigger, should not trigger, should trigger, should trigger
200 # ]
199201 ("13", [0, 1, 20, 4, 24]),
200202 ("13:00", [0.2, 0.9, 23, 1, 48]),
201203 ("13:00:00", [0.5, 1.5, 10, 15, 72]),
382384 reload_filesink_ctime_functions(monkeypatch)
383385
384386 monkeypatch_date(2018, 10, 27, 5, 0, 0, 0)
385 i = logger.add(str(tmpdir.join("test.{time}.log")), format="{message}", rotation="2 h")
387 logger.add(str(tmpdir.join("test.{time}.log")), format="{message}", rotation="2 h")
386388 logger.info("1")
387389 monkeypatch_date(2018, 10, 27, 6, 30, 0, 0)
388390 logger.info("2")
413415 reload_filesink_ctime_functions(monkeypatch)
414416
415417 monkeypatch_date(2018, 10, 27, 5, 0, 0, 0)
416 i = logger.add(str(tmpdir.join("test.{time}.log")), format="{message}", rotation="2 h")
418 logger.add(str(tmpdir.join("test.{time}.log")), format="{message}", rotation="2 h")
417419 logger.info("1")
418420 monkeypatch_date(2018, 10, 27, 6, 30, 0, 0)
419421 logger.info("2")
429431 def test_function_rotation(monkeypatch_date, tmpdir):
430432 monkeypatch_date(2018, 1, 1, 0, 0, 0, 0)
431433 x = iter([False, True, False])
432 i = logger.add(
433 str(tmpdir.join("test_{time}.log")), rotation=lambda *_: next(x), format="{message}"
434 )
434 logger.add(str(tmpdir.join("test_{time}.log")), rotation=lambda *_: next(x), format="{message}")
435435 logger.debug("a")
436436 assert tmpdir.join("test_2018-01-01_00-00-00_000000.log").read() == "a\n"
437437
476476 assert os.path.basename(filepath) == "test.log"
477477 return datetime.datetime(2018, 1, 1, 0, 0, 0, 0).timestamp()
478478
479 i = logger.add(str(tmpdir.join("test.log")), rotation=10, format="{message}")
479 logger.add(str(tmpdir.join("test.log")), rotation=10, format="{message}")
480480 logger.debug("X")
481481
482 filesink = next(iter(logger._core.handlers.values()))._sink
483482 monkeypatch.setattr(loguru._file_sink, "get_ctime", creation_time)
484483
485484 logger.debug("Y" * 20)
00 import re
1
12 import pytest
3
24 from loguru import logger
35
46
00 import importlib
11 import sys
2
23 import loguru
34
45
56 def test_with_sys_getframe(monkeypatch):
6 patched = lambda: None
7 monkeypatch.setattr(sys, "_getframe", patched)
7 def patched():
8 return
9
10 monkeypatch.setattr(sys, "_getframe", patched())
811 get_frame_module = importlib.reload(loguru._get_frame)
9 assert get_frame_module.get_frame == patched
12 assert get_frame_module.get_frame == patched()
1013
1114
1215 def test_without_sys_getframe(monkeypatch):
00 import logging
11
2 from loguru import logger
3
24 from .conftest import make_logging_logger
3
4 from loguru import logger
55
66
77 class InterceptHandler(logging.Handler):
2222
2323
2424 def test_formatting(writer):
25 fmt = "{name} - {file.name} - {function} - {level.name} - {level.no} - {line} - {module} - {message}"
26 expected = "tests.test_interception - test_interception.py - test_formatting - DEBUG - 10 - 31 - test_interception - This is the message\n"
25 fmt = (
26 "{name} - {file.name} - {function} - {level.name} - "
27 "{level.no} - {line} - {module} - {message}"
28 )
29
30 expected = (
31 "tests.test_interception - test_interception.py - test_formatting - DEBUG - "
32 "10 - 38 - test_interception - This is the message\n"
33 )
2734
2835 with make_logging_logger("tests", InterceptHandler()) as logging_logger:
2936 logger.add(writer, format=fmt)
93100
94101 try:
95102 1 / 0
96 except:
103 except Exception:
97104 logging_logger.exception("Oops...")
98105
99106 lines = writer.read().strip().splitlines()
149156 logging.warning("ABC")
150157
151158 result = writer.read()
152 assert result == "test_using_logging_function 150 test_interception test_interception.py ABC\n"
159 assert result == "test_using_logging_function 157 test_interception test_interception.py ABC\n"
0 import functools
1
02 import pytest
1 import functools
3
24 from loguru import logger
5
36 from .conftest import parse
47
58
00 import asyncio
11 import copy
2 import multiprocessing
23 import os
4 import platform
35 import sys
4 import multiprocessing
56 import threading
67 import time
8
79 import pytest
10
811 import loguru
9 import platform
1012 from loguru import logger
1113
1214
0 import pytest
10 import sys
21 from unittest.mock import MagicMock
2
3 import pytest
4
35 from loguru import logger
6
47 from .conftest import parse
58
69
5558
5659 try:
5760 1 / 0
58 except:
61 except Exception:
5962 logger.opt(exception=True).debug("Error {0} {record}", 1, record="test")
6063
6164 lines = writer.read().strip().splitlines()
6972
7073 try:
7174 1 / 0
72 except:
75 except Exception:
7376 exc_info = sys.exc_info()
7477
7578 logger.opt(exception=exc_info).debug("test")
8588
8689 try:
8790 1 / 0
88 except:
91 except Exception:
8992 _, exc_class, _ = sys.exc_info()
9093
9194 logger.opt(exception=exc_class).debug("test")
101104
102105 try:
103106 1 / 0
104 except:
107 except Exception:
105108 logger.opt(exception=True).log(50, "Error")
106109
107110 lines = writer.read().strip().splitlines()
127130
128131 logger.opt(lazy=True).log(20, "3: {}", laziness)
129132
130 a = logger.add(writer, level=15, format="{level.no} => {message}")
131 b = logger.add(writer, level=20, format="{level.no} => {message}")
133 i = logger.add(writer, level=15, format="{level.no} => {message}")
134 logger.add(writer, level=20, format="{level.no} => {message}")
132135
133136 logger.log(17, "4: {}", counter)
134137 logger.opt(lazy=True).log(14, "5: {lazy}", lazy=lambda: counter)
135138
136 logger.remove(a)
139 logger.remove(i)
137140
138141 logger.opt(lazy=True).log(16, "6: {0}", lambda: counter)
139142
0 import io
1 import pathlib
2 import re
3 from datetime import datetime
4
05 import pytest
1 import re
2 import pathlib
3 import io
4 from datetime import datetime
56
67 from loguru import logger
78
0 import pytest
10 from loguru import logger
21
32
0 import asyncio
1 import datetime
02 import logging
13 import pickle
2 import asyncio
3 import sys
4 import datetime
54
65 import pytest
6
7 from loguru import logger
8
79 from .conftest import parse
8
9 from loguru import logger
1010
1111
1212 def print_(message):
139139 logger.add(handler, format="=> {message}", catch=False)
140140
141141 pickled = pickle.dumps(logger)
142 unpickled = pickle.loads(pickled)
142 pickle.loads(pickled)
143143
144144 logger.info("Ok")
145145 out, err = capsys.readouterr()
00 import logging
1 import sys
2 from logging import StreamHandler
3
14 import pytest
2 import sys
5
36 from loguru import logger
4 from logging import StreamHandler
7
58 from .conftest import make_logging_logger
69
710
1114
1215
1316 def test_formatting(capsys):
14 fmt = "%(name)s - %(filename)s - %(funcName)s - %(levelname)s - %(levelno)s - %(lineno)d - %(module)s - %(message)s"
15 expected = "tests.test_propagation - test_propagation.py - test_formatting - DEBUG - 10 - 20 - test_propagation - This is my message\n"
17 fmt = (
18 "%(name)s - %(filename)s - %(funcName)s - %(levelname)s - "
19 "%(levelno)s - %(lineno)d - %(module)s - %(message)s"
20 )
21
22 expected = (
23 "tests.test_propagation - test_propagation.py - test_formatting - DEBUG - "
24 "10 - 30 - test_propagation - This is my message\n"
25 )
1626
1727 with make_logging_logger("tests.test_propagation", StreamHandler(sys.stderr), fmt):
1828 logger.add(PropagateHandler(), format="{message}")
7585
7686 try:
7787 1 / 0
78 except:
88 except Exception:
7989 if use_opt:
8090 logger.opt(exception=True).error("Oops...")
8191 else:
00 import re
1
2 import loguru._recattrs as recattrs
13 from loguru import logger
2 import loguru._recattrs as recattrs
34
45
56 def test_patch_record_file(writer):
00 import sys
1 import time
2
13 import pytest
4
25 from loguru import logger
3 import textwrap
4 import time
56
67
78 class StopSinkError:
0 import builtins
1 import logging
2 import pathlib
3 import re
4 import sys
5 from inspect import iscoroutinefunction
6
07 import loguru
18 from loguru import logger
2 import logging
3 import sys
4 import pathlib
5 import re
6 from inspect import iscoroutinefunction
7 import builtins
89
910
1011 class Wrapper:
178179 def test_multiple_handlers():
179180 logger.add(sys.__stdout__)
180181 logger.add(sys.__stderr__)
181 r = "<loguru.logger handlers=[(id=0, level=10, sink=<stdout>), (id=1, level=10, sink=<stderr>)]>"
182 r = (
183 "<loguru.logger handlers=["
184 "(id=0, level=10, sink=<stdout>), "
185 "(id=1, level=10, sink=<stderr>)"
186 "]>"
187 )
182188 assert repr(logger) == r
183189
184190
0 import sys
1 from logging import FileHandler, Formatter, Handler, NullHandler, StreamHandler
2
03 import pytest
4
15 from loguru import logger
2 import sys
3
4 import logging
5 from logging import StreamHandler, FileHandler, NullHandler, Handler
6 from logging import Formatter
76
87
98 def test_stream_handler(capsys):
0 from threading import Thread, Barrier
10 import itertools
1 import time
2 from threading import Barrier, Thread
3
24 from loguru import logger
3 import time
45
56
67 class NonSafeSink:
112113 def test_safe_writing_after_removing(capsys):
113114 barrier = Barrier(2)
114115
116 logger.add(NonSafeSink(1), format="{message}", catch=False)
115117 i = logger.add(NonSafeSink(1), format="{message}", catch=False)
116 j = logger.add(NonSafeSink(1), format="{message}", catch=False)
117118
118119 def write():
119120 barrier.wait()
122123 def remove():
123124 barrier.wait()
124125 time.sleep(0.5)
125 logger.remove(j)
126 logger.remove(i)
126127
127128 threads = [Thread(target=write), Thread(target=remove)]
128129
+0
-29
tox.ini less more
0 [tox]
1 skip_missing_interpreters = True
2 envlist = py{35,36,37,38,py3}
3
4 [testenv]
5 setenv = PYTHONPATH = {toxinidir}
6 extras = dev
7 commands =
8 flake8 --exit-zero loguru
9 pytest --cov loguru/
10 coverage report -m
11
12 [testenv:format]
13 commands =
14 isort --profile black -l 100 loguru/
15 black -l 100 .
16
17 [pytest]
18 addopts = -l
19
20 [flake8]
21 max_line_length = 100
22 max_doc_length = 100
23 ignore =
24 * W503 # Line break before binary operator (PEP8 now recommend to break after binary operator)
25 * E203 # Whitespace before ":" in slices
26
27 [coverage:html]
28 title = Loguru Coverage