hunterMakesPy 0.5.0__tar.gz → 0.5.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. {huntermakespy-0.5.0/hunterMakesPy.egg-info → huntermakespy-0.5.2}/PKG-INFO +2 -2
  2. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/dicttoolz.c +13 -13
  3. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/dicttoolz.pyx +12 -12
  4. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/recipes.pyi +20 -0
  5. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/dicttoolz.py +56 -49
  6. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/functoolz.py +28 -31
  7. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/itertoolz.py +43 -43
  8. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/dataStructures.py +54 -74
  9. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/semiotics.py +76 -99
  10. {huntermakespy-0.5.0 → huntermakespy-0.5.2/hunterMakesPy.egg-info}/PKG-INFO +2 -2
  11. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/pyproject.toml +2 -2
  12. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/LICENSE +0 -0
  13. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/README.md +0 -0
  14. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/Notice_of_Copyright.txt +0 -0
  15. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/__init__.pxd +0 -0
  16. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/__init__.py +0 -0
  17. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/__init__.pyi +0 -0
  18. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/_signatures.py +0 -0
  19. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/_signatures.pyi +0 -0
  20. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/cpython.pxd +0 -0
  21. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/curried/__init__.py +0 -0
  22. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/curried/exceptions.py +0 -0
  23. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/curried/exceptions.pyi +0 -0
  24. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/curried/operator.py +0 -0
  25. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/dicttoolz.pxd +0 -0
  26. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/dicttoolz.pyi +0 -0
  27. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/functoolz.c +0 -0
  28. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/functoolz.pxd +0 -0
  29. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/functoolz.pyi +0 -0
  30. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/functoolz.pyx +0 -0
  31. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/itertoolz.c +0 -0
  32. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/itertoolz.pxd +0 -0
  33. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/itertoolz.pyi +0 -0
  34. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/itertoolz.pyx +0 -0
  35. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/py.typed +0 -0
  36. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/recipes.c +0 -0
  37. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/recipes.pxd +0 -0
  38. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/recipes.pyx +0 -0
  39. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/__init__.py +0 -0
  40. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/dev_skip_test.py +0 -0
  41. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_curried.py +0 -0
  42. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_curried_toolzlike.py +0 -0
  43. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_dev_skip_test.py +0 -0
  44. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_dicttoolz.py +0 -0
  45. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_docstrings.py +0 -0
  46. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_doctests.py +0 -0
  47. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_embedded_sigs.py +0 -0
  48. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_functoolz.py +0 -0
  49. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_inspect_args.py +0 -0
  50. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_itertoolz.py +0 -0
  51. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_none_safe.py +0 -0
  52. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_recipes.py +0 -0
  53. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_serialization.py +0 -0
  54. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_signatures.py +0 -0
  55. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_stubs.py +0 -0
  56. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_tlz.py +0 -0
  57. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_utils.py +0 -0
  58. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/utils.c +0 -0
  59. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/utils.pxd +0 -0
  60. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/utils.pyi +0 -0
  61. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/utils.pyx +0 -0
  62. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_tlz/__init__.py +0 -0
  63. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_tlz/_build_tlz.py +0 -0
  64. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/Notice_of_Copyright.txt +0 -0
  65. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/__init__.py +0 -0
  66. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/__init__.pyi +0 -0
  67. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/_signatures.py +0 -0
  68. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/__init__.py +0 -0
  69. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/__init__.pyi +0 -0
  70. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/exceptions.py +0 -0
  71. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/exceptions.pyi +0 -0
  72. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/operator.py +0 -0
  73. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/operator.pyi +0 -0
  74. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/functoolz.pyi +0 -0
  75. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/itertoolz.pyi +0 -0
  76. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/py.typed +0 -0
  77. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/recipes.py +0 -0
  78. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/recipes.pyi +0 -0
  79. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/__init__.py +0 -0
  80. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/__init__.pyi +0 -0
  81. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/core.py +0 -0
  82. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/core.pyi +0 -0
  83. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/parallel.py +0 -0
  84. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/parallel.pyi +0 -0
  85. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/tests/__init__.py +0 -0
  86. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/tests/test_core.py +0 -0
  87. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/tests/test_parallel.py +0 -0
  88. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/__init__.py +0 -0
  89. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_curried.py +0 -0
  90. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_curried_doctests.py +0 -0
  91. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_dicttoolz.py +0 -0
  92. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_functoolz.py +0 -0
  93. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_inspect_args.py +0 -0
  94. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_itertoolz.py +0 -0
  95. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_package.py +0 -0
  96. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_recipes.py +0 -0
  97. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_serialization.py +0 -0
  98. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_signatures.py +0 -0
  99. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_tlz.py +0 -0
  100. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_utils.py +0 -0
  101. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/utils.py +0 -0
  102. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/utils.pyi +0 -0
  103. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/__init__.py +0 -0
  104. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/_theSSOT.py +0 -0
  105. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/coping.py +0 -0
  106. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/filesystemToolkit.py +0 -0
  107. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/parseParameters.py +0 -0
  108. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/py.typed +0 -0
  109. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/__init__.py +0 -0
  110. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/conftest.py +0 -0
  111. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_coping.py +0 -0
  112. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_dataStructures.py +0 -0
  113. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_filesystemToolkit.py +0 -0
  114. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_parseParameters.py +0 -0
  115. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_theTypes.py +0 -0
  116. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/theTypes.py +0 -0
  117. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/theTypesCallableFunction.py +0 -0
  118. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy.egg-info/SOURCES.txt +0 -0
  119. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy.egg-info/dependency_links.txt +0 -0
  120. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy.egg-info/requires.txt +1 -1
  121. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy.egg-info/top_level.txt +0 -0
  122. {huntermakespy-0.5.0 → huntermakespy-0.5.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hunterMakesPy
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Easy Python functions making making functional Python functions easier.
5
5
  Author-email: Hunter Hogan <HunterHogan@pm.me>
6
6
  License-Expression: CC-BY-NC-4.0
@@ -38,10 +38,10 @@ Requires-Dist: typing_extensions>=4.10.0
38
38
  Provides-Extra: development
39
39
  Requires-Dist: astToolkit; extra == "development"
40
40
  Requires-Dist: setuptools>=62.3; extra == "development"
41
+ Requires-Dist: pytest-cov; extra == "development"
41
42
  Provides-Extra: testing
42
43
  Requires-Dist: cython; extra == "testing"
43
44
  Requires-Dist: pytest; extra == "testing"
44
- Requires-Dist: pytest-cov; extra == "testing"
45
45
  Requires-Dist: pytest-xdist; extra == "testing"
46
46
  Dynamic: license-file
47
47
 
@@ -9741,7 +9741,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9741
9741
  PyObject *__pyx_args, PyObject *__pyx_kwds
9742
9742
  #endif
9743
9743
  ); /*proto*/
9744
- PyDoc_STRVAR(__pyx_doc_13humpy_cytoolz_9dicttoolz_24get_in, "get_in(keys, coll, default=None, no_default=False)\n\nget_in(keys: collections.abc.Sequence[K], coll: humpy_toolz.dicttoolz.SupportsGetItem[K, V], default: Optional[V] = None, no_default: bool = False) -> Optional[V]\n\nRetrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.\n\n(AI generated docstring)\n\nYou can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a\nsequence of `keys`. `get_in` applies each key in `keys` sequentially using\n`operator.getitem`[1]. If the path does not exist, `get_in` returns `default`. If\n`no_default` is `True`, `get_in` re-raises the original exception instead of returning\n`default`.\n\nParameters\n----------\nkeys : Sequence[K]\n Sequence of keys that describes the path to traverse in `coll`.\ncoll : SupportsGetItem[K, V]\n Collection to traverse. `get_in` applies each key in `keys` to the current `coll`\n using `operator.getitem`[1], so `coll` can be any nested structure such as a `dict`\n or `list`.\ndefault : V | None = None\n Value to return when the path in `keys` does not exist in `coll`.\nno_default : bool = False\n When `True`, re-raise the original `KeyError`, `IndexError`, or `TypeError`\n instead of returning `default`.\n\nReturns\n-------\nvalue : V | None\n The value at the nested path in `coll`, or `default` if the path does not exist.\n\nRaises\n------\nKeyError\n When `no_default` is `True` and a key is missing from a mapping.\nIndexError\n When `no_default` is `True` and an index is out of range.\nTypeError\n When `no_default` is `True` and a key type is incompatible with `coll`.\n\nSee Also\n--------\nitertoolz.get : Retrieve a value or values from a collection.\noperator.getitem : Return the value at a given key in a collection.\nassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\nupdate_in : Apply a `Callable` to a value at a nested path in a ""`Mapping`.\n\nExamples\n--------\n>>> transaction = {'name': 'Alice',\n... 'purchase': {'items': ['Apple', 'Orange'],\n... 'costs': [0.50, 1.25]},\n... 'credit card': '5555-1234-1234-1234'}\n>>> get_in(['purchase', 'items', 0], transaction)\n'Apple'\n>>> get_in(['name'], transaction)\n'Alice'\n>>> get_in(['purchase', 'total'], transaction)\n>>> get_in(['purchase', 'items', 'apple'], transaction)\n>>> get_in(['purchase', 'items', 10], transaction)\n>>> get_in(['purchase', 'total'], transaction, 0)\n0\n>>> get_in(['y'], {}, no_default=True)\nTraceback (most recent call last):\n ...\nKeyError: 'y'\n\nReferences\n----------\n[1] Python `operator` module\n https://docs.python.org/3/library/operator.html#operator.getitem");
9744
+ PyDoc_STRVAR(__pyx_doc_13humpy_cytoolz_9dicttoolz_24get_in, "get_in(keys, coll, default=None, no_default=False)\n\nget_in(keys: collections.abc.Sequence[K], coll: humpy_toolz.dicttoolz.SupportsGetItem[K, V], default: Optional[V] = None, no_default: bool = False) -> Optional[V]\n\nRetrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.\n\nYou can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a\n`Sequence` of `keys`. `get_in` applies each key in `keys` sequentially using\n`operator.getitem`[1].\n\nIf the desired key does not exist, `get_in` will `raise` an `Exception` or `return` `default`\ndepending on the parameter `no_default`. If `no_default` is `False`, which is the default,\n`get_in` will `return` `default`. If `no_default` is `True`, `get_in` will `raise` an\n`Exception`.\n\nParameters\n----------\nkeys : Sequence[K]\n `Sequence` of keys that describes the path to traverse in `coll`.\ncoll : SupportsGetItem[K, V]\n Python `object` to traverse. `get_in` uses `operator.getitem`[1], so the nested objects in\n `coll` can be nested o any type that works with `operator.getitem`, such as a `dict` or\n `list`.\ndefault : V | None = None\n Value to return when the path in `keys` does not exist in `coll`.\nno_default : bool = False\n When `True`, `raise` `KeyError`, `IndexError`, or `TypeError` instead of returning `default`.\n\nReturns\n-------\nvalue : V | None\n The value at the nested path in `coll`, or `default` if the path does not exist.\n\nRaises\n------\nKeyError\n When `no_default` is `True` and a key is missing from a mapping.\nIndexError\n When `no_default` is `True` and an index is out of range.\nTypeError\n When `no_default` is `True` and a key type is incompatible with `coll`.\n\nSee Also\n--------\nitertoolz.get : Retrieve a value or values from a collection.\noperator.getitem : Return the value at a given key in a collection.\nassoc_in : Create a new `Mapping` from `d` wi""th a value at a nested path.\nupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\nExamples\n--------\n>>> transaction = {'name': 'Alice',\n... 'purchase': {'items': ['Apple', 'Orange'],\n... 'costs': [0.50, 1.25]},\n... 'credit card': '5555-1234-1234-1234'}\n>>> get_in(['purchase', 'items', 0], transaction)\n'Apple'\n>>> get_in(['name'], transaction)\n'Alice'\n>>> get_in(['purchase', 'total'], transaction)\n>>> get_in(['purchase', 'items', 'apple'], transaction)\n>>> get_in(['purchase', 'items', 10], transaction)\n>>> get_in(['purchase', 'total'], transaction, 0)\n0\n>>> get_in(['y'], {}, no_default=True)\nTraceback (most recent call last):\n ...\nKeyError: 'y'\n\nReferences\n----------\n[1] Python `operator` module\n https://docs.python.org/3/library/operator.html#operator.getitem");
9745
9745
  static PyMethodDef __pyx_mdef_13humpy_cytoolz_9dicttoolz_25get_in = {"get_in", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13humpy_cytoolz_9dicttoolz_25get_in, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13humpy_cytoolz_9dicttoolz_24get_in};
9746
9746
  static PyObject *__pyx_pw_13humpy_cytoolz_9dicttoolz_25get_in(PyObject *__pyx_self,
9747
9747
  #if CYTHON_METH_FASTCALL
@@ -11202,33 +11202,33 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) {
11202
11202
  static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
11203
11203
  CYTHON_UNUSED_VAR(__pyx_mstate);
11204
11204
  {
11205
- const struct { const unsigned int length: 12; } index[] = {{46},{1},{1},{1067},{1651},{19},{16},{7},{1774},{17},{6},{2},{2644},{17},{27},{9},{21},{1953},{1789},{18},{20},{1765},{1719},{17},{1590},{15},{1909},{21},{50},{14},{2093},{20},{20},{1779},{1685},{17},{7},{20},{3},{7},{5},{8},{18},{17},{18},{4},{11},{1},{7},{5},{17},{6},{7},{6},{4},{8},{6},{12},{23},{13},{2},{10},{7},{5},{13},{31},{33},{3},{9},{6},{4},{6},{8},{5},{10},{10},{8},{4},{10},{3},{7},{9},{12},{11},{12},{10},{17},{13},{4},{12},{10},{12},{19},{8},{6},{9},{9},{6},{5},{6},{2038},{99},{97},{107},{57},{57},{205},{170},{9},{59},{52},{90},{90},{24}};
11206
- #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (5478 bytes) */
11207
- const char* const cstring = "(\265/\375`\306j\345\252\000\212z\214\030F\020\2576\007\000\000 Q\250B\001\025 \024P\001\220(\024\004 \020\2431\353o[J\364\026\331\376I\333\226BV.\337\r\344\377\343\201\374\007\226\3772\355\341\025\243\327\247\363\2202\272!\243h\217\344\r\000\0330\232\r[\001[\001p\001\244\376|m\t\244\277\342\373w\251\275\334\243\370\037\027\243\234\350\362nq\337\327\037um\235\226\352kJw}1\377\276\366\276\311\222\234\2028\264.]G\030\314c\226w\376\373$?)\351h;\262\232\216\233\272\210\363\310[PD\344\313\253\350k;\353\n\305]\002)3\315\237\rAB@H\031o\343\246A\\A@Bz\334\273\364!Y\261\350\036.\355r\304\203\367\363\217\270/$D\206\363P\214ue\234k\030\305\\\223\211q\013\026,|8\212\364\244!D\250\216%D\0227\223\373\263\326\256\037\244\341\370\3313v\275\363\353k7-m\267\036\314$V\261,\017y\265\256\017\353\322\371\367\2134\323\021O\272\264\004^\327\217\353vI\266^\317\272\312\3573\350e\246\265z^\216x{\346\341\341\321q\317\363\327\240\223\030\305\346U\353\236\347\245ma\274\205\023y\236\303\374u\352\277\351g\023\353\272,|x\266A[\235\304[6\251\265\210D\037~4\014\251I\231\361\006\351\3105\026\017=\031R\223\207\264\026\026\327PD\244k\307\221\202\330\300\217n\372b\033\206\030\364P\355\200Xkza\303d\270\030\314\367}\221$e\3525c\230\362]\274\376\006\177<\375%\375R\337\230\344YG\306\023\023\2765\026;\356\002\322\357A\232WHJ\017G1\353\312<\"L$\344\303}\200j\246\240o[eZ@\237\215s\315\003\332<[c\020k\301D<&zMK`&G\314\267m\263.\r{\320\206%\330\213\364b1T\357\215n\2357\2117\375\261<}\275'\031\347\254\301s\026\026\036z\232\222\344\006I\377\017k\327\366\375\234I\320\304D\363g3\250\277VjI\332\322\374\341=\231W<\317s\255mmO?:\361m\313\330\263\256P[\027\014\036mJ\262&z=\322\2630\244v\337\337xt\372:\244\033\276\016_\327\236E\024\216\"<DG_\305\337'\3739\350\235\3618\222*\333\212\020\343\335\225\243H\226<\324\001I\3673\t\"\022l\025]\237x\003?\311\224'[i\376\361\343C\353\007\377^\262Zl\242\256\341}\367\223\243(z\326\036\334\3740?2\021\322\215\365[\322\326\216a\266\337\177\230\375\237\353\327\341gp1cRX\002\343\257\361\370""\340\351\265\370\333\372\265t_\014>\211\372x\327\3178\264\3723E\261\256\253\271u\331\372&,~F\361\320\266f#\236\014\004\212\340\177m\330\361\017\213\221\371|D\377\246\267\231R\247^\206\343XBb\035\226\370\277\312\305\232~;\014]\206S9\242\353\262\t! \021P\004\rz[\223\t\023,,\023\270\354\343\221\3010\006\231~\014H4n\305\n\017\347\020\300K\363mAW\350\272m\257\005CjM\325\273\356s\3279\276\031h\204\333:\333\021\347\361\310|8M$\365V\037\264\256kD\257Kk\234A\352\227v\321\362\273\302\221I\024\362\271\336DK\037\256\313\265+\223\3010\327d0\214v\326\265u\306\033\256\355Mw\263Wh5\036\261G}s\241\373\3324\274/\352L_{W\376\272?\324*>\354_\005\241=:O\312/f#\023>\037\305\264\37408\334ZD-\036\320G\024\206\366\323\366Z\226\222\254\326d5\324\213G\3759k\272\206\226\374\374\303\311C'\247\365\023i\250\307G\331\262E\361\214\210d\022@!!\0177\342\004E\005\202\207v\003\367L\253\237=\030CHW\273/\211A\360\013\311\021\217\241\025\353\"q}\261z^\213\t\327>\200\227\034u> \017\211\270&\342!N\304+\270\307IH\374\343\017\334\205\304M\256\271t\252\035\341\ru\253\237\267&E\315\255\313f<\362FQC\326\331j\r\337\226z+CM\342\277T\264\273\374</G\332n\252]gK\307\017\215\334\237\307N\306\211\200\362\357\320\216*H\tf!\023F\032x\310\272B\331\3264\274\017~\016\034\027*fRf \2446\234\007\006l8*jf:+\347\211\231\221TvvL\216\257\246\343Eh\243\332\320X\245X\003,j:0/\r\215\214M\306J\rK\tU\t\022\025\311F\3251#!\305r\226\234\005jM\312\314\203\215*\345\204`^\250\0301(J\363\222\262a\016\310X\275\230&f\007\324\006\207\246\300I \203\23204\034'\347T`Z\0334\034)\214cc\305I\275\234\n\002\250\002h\254:N\t&\001\215\025\207\206J\206\t\032\016\323Z\275\244h\312A\252\"81\223\200\251\306\353T\235\007\225\007\016\245\301Y\225\230\234\311\201\246\344\3340\220\221`C\265! D\r\205\261a\243z9\005\010\340\234/\346\003\363\312Xq\270XiQ\322\202\234\2413\036R\033\251\014'\203S\233\002L6\034\257\246#\265\340\271S\343\374h\200\260\206\203aBS\245\263d\226P)(\000\032\253\027j\242\2505\03500lT\034s\000g\325a\226@\225\24062V)3'R\246\363d\2220\021\230+(""\000\031\253\216\024G*\302\331q\2260K\314\003&\307|A\t\340\2548\263\303\274N\3203\345lpr\234)P\0008\253\024\223\204\n\300\241\341N\004\032\033\316\250\206{Aa\243\332l6\233\356WX\255\273k7\231\207\217v\007n2\017\237\320\205p\335\036\261V\0027\035\273\321\272\270k\035\017\027Q\216\350\272Qx\372\027p\304\343\355:M\312\024\306E\203[g\273m;m\273\255\333z\323ndk\335]\027\352\r[\360\226\232v\335>}\210\206\276\250\223\032B\010\025\232\021\021\021I\222$\303\001s` 0$&\236\016\007\004\343\026\037\023sa%4E\345P\206C@\206(B\020!\206\020\242\004\204\020CdDjHF\365j\002\006\221\314KL\026\034Z\262:\n\217\tQY\013\216t\217\317\000\317\361\031\252\264S\006h\"\372\363\245Y4\365I\210\021\255]'\314I\016ZP\204\315\226\322e\036\022\250bB+w\212\357\022\271H\376\rVV\333pq/r\315\251\231\001w\034\254\013:\275\332\t\224\024\2255\234\332jU\001,j\321\301\214'\016\032\212j>\344\024\315)\374\356\010&\324\312L\010\002\221\273\204i\215^\0279\334\010\376Z_(GV\000?\311\014\n\300&e/\177[@R\022\321JP\315\034\222n\362\272\326\200\311\254e\267^5z0\331\tC\222x\366\001\344\243\203/\323\354\214\325\243\222A\3354\246\371(\272\264\020\017\017x\252=\003\007\235@\245\257t\021\214)Qt\024ZJ\341]\346\351\207\253\326Y\331wX\274s\323c\213\300\\\202\251B]\0214\254#@v\361@\026px`\031*D\250\373\360\023\241\001\310w\335CZ\214\263J\323\224\261\271f\242\365\306\224\262\204\004\273?\265\273 %\004>s\240\032\276p\177\026\222D)\203\005\275_B~\313A\277A\274\317\216|\306jk\031a\307\246h2\272\025\240\251\332\217\335\212\200\261}\025&\354\372\213\374\373,\007+.\215\372!3\356?\251\007(\316\220\2053\016\277r\304/\2600\235\3466E\271\222\344\352\002_\014\217\340\223\240\217g\013\037\330*\222v\357aqoH\247\20496\240(\217\210\003\031\357\014\023\273\205\220\n{\335;\231\244\205\356\230\260>\352\177\020\215\004_\306#\373\244zR\226\315({\013\336#\320C\003\225\t\374\2222D\221\252z\233EwL\252J}\245|[\007iH\230\023\333\034*\266\310\355\002s\320\346\342\232\215\010#D\320y\010\316d\336\342\243U\3160\200\342\000\313R\324\000\006\034.KAD\037\341""\032\314\321S\222\016@R\021\307\024\333M\372\322x\010bmh\230\360\300\310\264 \350\022\204#\305\t)zKs\013a\262\210\030\256+\357\207)\244\2120\366O\214\272\352\264\224\343\330\023\022V\325\246\362\005\327\022B\013\266\303U\205\025\2535\204\3203$\253\250\250J\315^\370\345\n\001\n/\343\262k\345\026\321S\026\002\241\355\256\275\004z\240\020$\214\314M\310\310i7\020\014\251$$\306?\024*d\036s\024\252u\211[\344\244\303\343\232vD\241\233\234r@\202\250\010YK\360{\303\017B~\0241I\212\026!\316\336\007\342f\305@\212@\010\341p\315\246\335z\036q\025'\031iz\020ib\355\314R\340 k\316\336\251&\240{\200A\024\006\320UP\026\004\222,\235\026D\325\023k\215\004\027\014\177\250MAp\302\232\310~\031\362\305i\305\177\304\005N\234\001\250\246\030\000\261\315@\312\361\320b\215\246\244\205\010\362\014\330u\230\305\033h\210s&AiE]v4x\304\2651\021\275\255J\320\177B,\267\272\302\010q\021\372\362\346h\211D\007n\013\260[\343\213\016\241\206_\031\350\342\020}\037\231\010]\t\306]\265\365H\256\217+\026Q\264\215J\252\3740\225COM?\203\021\300\303>\222\273\265\307\374\245e\254\312\252\341\342\303_\345\264#P\\\2718\217\324\375\371\rE\321\356\346\034\345\340,W\256-`\324d\307\270\376\253TD,\276*\t\234\312\031'\277\303\265\320\001\303hF\216\014\235\020\222A\371\023\233\023h,=\335\251\206\020\270\251@\310\342H\310\245\003\374\373\020\200\265G7.]\350\337\273\243\273w\333\364x\177\336\3517,\351X\365\235\212Q\n)\002\254\271\031\013\375\363\343\337S\343\203\2324n\241\005hm.j\024\361d\332\203\005\253\027\236\214\343\232\r\341\303oU\340\264\025zyJ){\007\370l:\030T\220/x\214\302\t\314\347Ir\351\020\317L\nQg\263A\300}\033;-\277v\367=\310\256\223\351\273\302\355\374\205\364Y|\004\2474SlB/\346\274\027k\255\253\230\036\344A.\310nD_\317\205r\312Ztr\001)\031H\000\347\331\325s\007\307\215K\2613\235\207\325\340\346\306\017<.\017\277\253pcs\030\216$\276{\371M\322&\3334\363t~(\275\374\234\\#\257\234\204\325\325\030\331Y\346\212\260\206\335\255\361\3549\257F\272\360\360\2007v!\304\0355\010\233is\0013GjGi\027pp\013\225\033\205)\035""\036,\325\242\374\272\347\306\300-\206\363\372\032\211\226\301\242.\245N.S\236\231\2040\275RP\322$z\225\033\027\\O#\255H\303/\324\021\326a'\213\312D\022\200\275\244\376\031b$\270\236\">\trI{v\251\244\363\007Oq\252\201\242\247\274\002NI\256\261\274\323{\216\036\236\322d\035\236\276\262\337\214\300\340^<'\341\200#\032\316_\344w}\216!J\326\232\233S\304\262\240P\332\223\324\206\032\277K\3634-\tiD)\311\205\360\313\205\313\370.x\023\266\022p\003\266\337\007S\n/f\274\325\215o<\220\030\217Z\322\212A\374\236\027\220\r\253{v}mj\366OA&V\320\230\026p0\302\275=;\036\201J\365Y[\214\365\243\tw\217\021\363\356<l\216\223\326g\024.O\230\260\201;\341\347\225%\274I\022\344\310K\312x\372V\327!\334O\021\301\306\\\363d\224)\034\247\300\245\007\177?\230\\\263\020\212\311\260m\355\323\316N\366N\364\366\304\257}\016\243(\007{\235$\364\010\304\202\213\320\025x\307\177\222\313\024\260\305\227\350'h\211!\204\032\256u\314\247\036HG0\346K\030\243\264<\264@\022j\206\007\214\210\036$\336\037\220|\272sf1\037\321\363n\265@\303\332\n\347\207\235\212\n\350\220t{\212\002\270KI\275\273p\366\033\346\017\234[\306\311t\030T\016J+\213\212\236D,\201B\n\331\333\025G\327Y\003\330\337\t\254\323\314p\000\026\201x\253Vo\002\333\277\245t\200m\213\256+\341\206\316\357\370\251\266\221\260$\274\234\366\026#\232\000\347\"\340\302\220\266W~\346A\303\357=\253V\343\327\302\376\335\022\321\222\325[\377\202\302hVS\227[aQ\007\301\036\217\\s\247\305\263h)t5Q\326\274\335SH\033*\336d\302y\003v6K\264\373p\335\2612UH\262\226\222\263\321\252\307\343\244g\3250^\255\270\325)z\020O\3735\006t\027T\365+V\226\262\323\330{\367\272\024\247\302\337\300\020\3300\262\000O\345\024\345u\016\036g\345k\242\240\310lA\224\375PB\t:k\013\376[\260{\311\356\000\275\243?\337\307\351\026\375\033l}e\263\023\006\240\004\335\255\211$\373fW\244N\301\013\217\201u\230l5(\360,i\324\244\303=\260-\236\204\365\372w\235n\034^\350H\341\265h\263LK*\347(\027.\261F\344\216\022\230}|\276\3020$^\261\3224\325\223&\2517p\000\270!vK[t\010h\033\350\221\371\226Q!efQ\203\307""\236\257\233YO\317\353O\252\275\355\267\210\267A\214\254\313\302Q=<^\243 \006\257\201\230\316r\206\267\322\272\350+a\233\260v\212\257\221\261V\321%\257\241\307\330w8\360S\254\240\260g\315\345\001\326H\313\264p\254\230\000\341\356\002\373\247\230\350\227\201\246\234\025\352>\002r\034\246@\223\370O\316}\r\037\361UK\000\223\300\2752}\002\313\\\033\356\225\252\265\304\024`\253M\177\333Abk\037\266\260Z\034\375+1\240\260t\\CD<[qC\007\2333\370-N\225\024\253\343\n]\300\235H\004\231(^LG\365\262\260\242\240\221\352\033|\226\315\300\221\2111\227\004\276\270\244\257\217N\205\331\355&\231\353>Tt^ZI\342\352)\357\0018q\235\3062\346\261\"\230\006\271.\274|\214\224g\367\227\212\037\243y\315\006v\013O\232\225\261\244\224q\222\023B\361\355\255D].\255\233[\030-p0\244\300K\303\267\346T\001\270{>\r\264\234c>d\033\326\363A\242\031\202H\031\227\002\223)r`bFo.\316)s.NMvj\363?6)\t\267\307\277\324\260<6-s\313\017e\373\252\301\334\007\234\224(\204\334Z\311Z'\311Jsa\232\352\230F)\205k\232\341\340\334:\211\364\235\271\2738+8\342\244|\022\353\3518\376\026Ps\240d\023j\332<\323\256}#aKN\340\226\025<\2548\216\271cDf\216\227\365w\303\265Q\323\002)\233\215g\2740=\370\2613pM\205\212\220\342\236%&6e\262\031\027hV\313\211^\313\305\316\"J\276^j\257\023L\356\225\036\200\033:\242V\006{Q\236\221\237D\271>{\016rVuV?r\265\213\254\233\177\270\001\242\333\205\336\253\361\334\322\223\3039h\237\34535\226\354\306\262\217\2369\314\362`f\346B\300\211\204\301\227Xp\256%\\T\220\377^\241\320\021\n\330N\241\033\2215\241\210\2740\311\225\237Z\221\216\260b\224\323\306\002\315X\342\022bmc\236\"-\202C\014\367p\004c\027\275\217O\3149\021\374\226aBa\233\233u\2600\027V\005\"4\342\026\236X\026,\006\310\257U\265m\356\300\013\363\230CtWM\0207K\266\304\202q\244\266\253\352\004\360\335\347q\363\352\033\225b\305\302\356t\304\274\206~\214#\023\341\244\321\231\343\371\334\346K\273\307\3134\023\001\323V\267\311\212\251\300\222\206\272\270.\213)\316yt\332\272&\235-\311V4\221\026\237\251\255\263\230\272 +\251\336\346\004\220\000\364\006""\330|\212\216\255VE\217\372\277\377\203\377\217,\337\300\275\2249A\023\266X5\353\\\203E\340\334\220A\211\200\311\211\230\247\037\r\243Q\262\347\34602\244Y\340\371\007\025\023\331\243\204o\321\314k7\354\024\016\232\374\317\000\223\350\254`%U\306\217\350\224 \016D\364\357y5\332\327\367BB\302k\337\"*S\327\327.\312\025\366{x\316r\276\2640\036\210\245\327n y7\332\240\177\212\030\356\221\017Nn\273y\014#\357\2000\320+%\306^\2672\363?!\013(_e\021\373\212\212=WV\262\223\21200Y\213U\312`P/\014A!\"\372'r\3314\310\363\312\023\240\223\324\221\235~Xr\215\013\rH\273\243\331\322s\347\372@\277\250\200Z\235P\206i(2\264X\2160_\037\033\275sHO\217\342\001\0216\304\220\300m\210-\335\211/w\215;\201+o\002>\364\t6T\272\235\257\017* \263\376\312\244e\\\254\242\345\250\324:,\360dg\340${\304\373B\260\212b+\211\202!4V\342\255\221\t\014\014\027Qf|\214\313+`G\231\252\026\263\025\205}\005\277\221xZe\326q|\251\017\313\304Pc\262\230\305\266I\n\025\256\023\034k[\373\365\220,4i\265\337U\212k=\225\031\017*\226}\352VWM\\\007\232\275\315\310\256\332\316\340.;\275,!n\315U\222\204\"-\256\232\225\373\2574'\3562\342;F\020R\277\214K\332_\276Q\340\360\307f\303\241'\262\373w4\214\216\237\227\356\274\246\003BR\030\2532\024\254Q\215t \254\262\211\322\262$j\212oR\026\265IpTSR\347\307\264W\302r\010K\202Yn\256\241\266\273\330\317\266I\354l|\273v\224S\312\312\220j\037\260\023}NYe9oXAT?\330\2742\307\361GN\266\t\213\272\033\247W\203\322\322|x\034\242\212:\362\241Q\023\000F\003\365\257\353\312\"\371\2545lQ\323\247\324\027\036\231o\003\032\034\227%\235\360\317\230\225\336\310\331DF\200\036\245\037\265\372.\311-w\341\304h`\372\205\234\206C\210\306\0276\252f\334}NI\277\362U)\367Y\220I\005e\210Cc\253\330\376\203F\254\216\n\275^4\257\207z l%\331\267'O\320\223\035\037\033\247\250:\255\036Ju\244\276\306\204^R\310\225\324\306\177\344\316/\004\366>\247C\346}\245\2657CI\313\235\233\350\236\266\371m\315p\013\2636C\237\210op\005\237\243\nA\256\021q3\333 z\210\315a\215\307\312~\231\226\372UVX<\377\364\301\270\003n\232|\207\344\001X""\242\250j`\340\304\300O\0339\024\177O\216\3404\263\360\022\025\303\336?\031 1\343&!YL\212\231x\261\255\273W#\003_\3630c\033\274\220\243\365me1\336\234ra\211\353\244?\335[1\263|\245\331s4\237\346?\263\340\n\3018\340\305\311\340\230\330\267\223\310\302\024\253\276.V\241\005L\204\265\3132\366YYTv\366\225\325`\005A\032I\027,O\001\343\001[C)\251\213\343@\202\025de0\362{[\003\211_\217\207\3144c\214\337\220\275\002\375E5\246\204\205\313/\3720\303L\205HQ\377j\326\334\326M\217\270\326\202$E\206QQP\264\0235yh\006\354\237\362\2071i\307\027\255F\314c#\312\350\271\204\347\362\313j\224:#X\204\t\207[c\261\024P\2143\234x\0141\243(\257>L\010\024\361\242ym\366\344\273!\205y\330\365\231\266\306k\314\227\365\322\370\311\273\301\024\376g\016s\264\007f~\005U\010\t;^\276\005h\327M\354t\024\260)I\200\324\230\364\267\377D\356\355p\201A\275/}(\017\365 \336N1\n\020,n\3701Ru\340\226\2539)\220\321<\322#\373q\262\266u\026Y*p\010\020\311x\324\2350Vab\212rH\033Y5\216\341Q\245RB\017\323De\376\377\311Z:K5\000\223\226\222\205\356\036-\353[\374\037\020\221AM\025>\367\253\222\270V\325\177\242W\261a\242\2254\320\360\023\033g\027\027\341\t\2320\372D\332\201?\214\365F\240\254\324<\344t\375\215\370\013$\211\341\026tL\346 $\224+\317\276\200\"\273\270\003\327\317c\334iY3\311R\\\017=ZjD\3321js]\340\200\252^\370\023>\204\003\211n\266\031!\023J\246\365\r\234\206z\261\023pQ\363\377\310\036\344\035r2\276\275\t\222\363$\302\024\213\023\244\010]\353\014\240N\2662\316\301\325\326\374\325\300\232\350\032\272\340E2\307b48\235\230\201,\206E\213P\252Cr~\271Y\032\311\334\235e\275\312:\340]\332i\340\351\006";
11208
- PyObject *data = __Pyx_DecompressString(cstring, 5478, 3);
11205
+ const struct { const unsigned int length: 12; } index[] = {{46},{1},{1},{1067},{1651},{19},{16},{7},{1774},{17},{6},{2},{2745},{17},{27},{9},{21},{1953},{1789},{18},{20},{1765},{1719},{17},{1590},{15},{1909},{21},{50},{14},{2093},{20},{20},{1779},{1685},{17},{7},{20},{3},{7},{5},{8},{18},{17},{18},{4},{11},{1},{7},{5},{17},{6},{7},{6},{4},{8},{6},{12},{23},{13},{2},{10},{7},{5},{13},{31},{33},{3},{9},{6},{4},{6},{8},{5},{10},{10},{8},{4},{10},{3},{7},{9},{12},{11},{12},{10},{17},{13},{4},{12},{10},{12},{19},{8},{6},{9},{9},{6},{5},{6},{2038},{99},{97},{107},{57},{57},{205},{170},{9},{59},{52},{90},{90},{24}};
11206
+ #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (5540 bytes) */
11207
+ const char* const cstring = "(\265/\375`+k\325\254\000z{\264\030F\020\2576\007\000\000 QH!\202\212\020\n\250\000H\024\n\002\020\210\321\230\365\267-%z\213\234\376H\333\226BV.\337\r\344\377\343\201\374\017.\3752\355\341\025\021\263\357wO\272?\223Q\264G\362\006\200\r\030\315\006]\001]\001r\001XOo[Q\1776}\363Y|\377\036\265\217;\004\377\343\342\024\024=\336\r\356\373\332\233\256\253O\023}=\347\246\017\346\337\267\336?\325\222\317\017[\353\322\224\204\277\034by\347\277_r\024\223\217\256\244\252g\270\247\2038\223\334%e$\302\374\212\276\225\263.\013n\023\310\230g\366\252\005\021\001)e\254\205\232\3760\005\001\021\351po\323[\221b\320;l\332\343\210\377\356\347'm\236\210\310\314\346\"\031\353\3026\317<\323\343\331\214\214[\260`\341m\010N\324I\010\021\rK\200$n\026\367g\255]\3777m\370\3313v\275\363\353[\3674m\267\376\313\"^\261,\0279\265\256\017\353\322\371\367\2033\317\021_\272\323\364]\327\217\251vK\225\336\316\272F\357\363\347c\236\224v>\206x;\346\341\341\361\361\256\363\327\237\213\030\205\326\321\352]\347\246]c\334e\033u\235\307\374\365\351\277\347\347\014\326uY\370pl\177\225z\211\273l1s\031\215\336z\323\332\231a\314x\177\223\344Y\213\213^\264\363\344\242\314\245\305\263\224Q\351\3260\234 \264\317\233\232\276\270Z\213?\027\321\317\207\265\236\0274\317\314&\343\361}\037\024Ky:\3158f\374\027\247\277\277\017Q\177E\277\3237.9\366\231\001\311\004\366\376\367\331\267\306\340\307_\276\351\37573K\311\010\332\246\307\2720\320\3103\"\022\262}\204h\236\237\357\372\315\270\204B\264\3153PH\003m\215?\217\213G\304{F\257\247\351\313b\350qM\323<\377Uk\342yp^\217\314\324[\233[\347\272g\335\"\256~It>\352\351E\3118\347\223\316[X\270\325S\324/\037\216\036\326\236i\361{\025\036\316\177\232\331\253\371\263\256\356\305\314\222\351Z\263\256\013\357\207]\347'\257\353\2646\333\272\242>W\375\224\204\242el\255+\006\223\366,\325\323\274\235\350\230\265\263\356\373\033\207>_\333\271\301\343\360\365\354[F6\024\341\242Iz\n\376F\331\317A\357\214\303P\\\321VX\21477\206\240hr\321\347+\335\307$\214H\250\024t\215\342\r\03453\242*\235\371""\303\217\017\255\377\373{EZ\361iz\206\367\335/\206 \3509{p\363\307<\311\204\235\033\353\257\245\255\035\307\374\307\354\367\\\277\266\257\301\301\214K\326$\306_\343\360?\324k\360w\365[\347\276\370{\022\364\361\246\237\261\255\372\363L\261\256\233\271uU\372'\014~N\361\320\225b$ ,\024\212\340\177\253\375\270\347\221\231\t\t\031\375\237\276\3469}\372h\303\320D\304\332\232\370\377\312\r!8\r\250q\004\307a\023DB#\241\010'z\327\223\t\023--\0236,\0044\343\3610\310\323cP\222m+@\233C\370<\323\370\336\352\373~\316\342\267-\350\n\034\267\353\255\237\235\365D\235\343>s\234\343\213\205H\266\255s%m \320L\310\226\201\242\326\350\177\326u\221\346ui\215\3637\375\312\256\313\222N#\221\220\353O\323\364\341\272<\273\260\031\217\307\263\031\217gr\326\265u\306\033.\355OW\253\227\255\032\207\270\233\256\275\314}\355i\357\203:\317\327\335\225\237\356\267\332\003\241=>_\312\017b$\023B\274\351\311\362\307`\253\271\214\\@\241\220\221\265\325\323\365\326\226Q\244\365TOf\3158\324\237s\246\251\255\242\347\037P.B\371\244\0368\255\016?E\3135\005D2\202I\010\211\210@\333\010\224\224\025\010.\332\r\334\261\214~\006a\014\"M\353\276\"\376>\317\212!\016E,\326%b\372 \355:\027\023\236}\370\256H\372\204\204\\4\342\331\210\213\266\021\257\340 /)\361\020\177\340/%~\362\354\345C+\to\240\032\375\274\265\010fn]\031\223\272\020<q\255\303>\032\245\366\353\250\265\321j\021\377\235`\325\326\265G\257\363\221\244\353\236\332u\2563\374\310\304\3759\374`\333H(\377\266\225DA\306\017\023\231@\322\300E\326%\302\266\236\001\035\027*hTh \2506\224\007\006p:*nh>,\345\t\032\022\025V~H\016\357\246\343\205\210S\263\241\261R\261\006X\223t@^\032\032\031\234\014\226\233\226\0225%JjJ85\0354\022T-\245IY\200\336\250\320<\340\324\250\224\020\310+\025C&5m`T6\310\001\031+\0302\003\331!\265\321\261)P\022\310\230d\214\rG\331)\025\220\326\206\r\207\312\303\261\261\352\250`J\005\001j\002h\254:J\t$\001\215\025\207\306J\206\t\033\016\322Z\301\250\246\312\201\212\"(=$\201\323M\307\325p\036j<l)\215\316\312\204\334H\0166&\345\206\201\214\004\0335""\033\002B\334L\030\033850\245\000\001\235\022\206|@^\031+\016\027,-LZ\2104\223\306\203jC\245\241dPjR@\006N\247\273\351P-\370\255\324(\275\031\300\336l02L\225\2514\221\246\224J\n\200\306\nf\222(\350M\007\014\014\234\232\0169\240\263\352 K\244LR\033\031+\025\232\023\252S\211\"I\220\010H\226\024\200\214U\207\212C\025\241\354(K\220&\344\001\262C\302\244\004tV\033\331A^'f\251R6(9\312\024)\000\235\225\nYJ\005\350\330l%\002\rN\207t\263\275\240\300\251\341p8\034\356WT\255\271[9\230\207\2236\367q0\017\237\300\211l\334\016\361'\232\276=C.\254/\356\331\307\303E\214#8\216dQ\017\363\2058\014qx9N\227\362\214y\321\237\306UnWNWN\343\266\336\223#UJ7\307Y\255\341\372\335QO\216\333\250\017\206\330\250s*B\010\031\232\021\021\021I\222$\303\001s` 0($\237\017\347\363\332\026\0373\203i%0\005\205(\302! C\024!\210\020B\014Q\002B\210!2\"5#\243zj\002\006m\350\013\344H\n\255\255:\377\202\211\253L\027L\214/\237M\310d\000\n\2733+i@o\361Ee4\365-\004\356\226\350'L|\007t\250\315L]\211\240\006\020\252\220\225Uuj(\211G\244w\033*\332j~\334\373\270\346\030\317\200.\007\340B6\257\023\002}E\304\016\357\233\016\237\001M\035\336\230\301\304A\256\204\344\207y\242\365\207\203\215\300n\332\301dp\223\325\235Bo7\232\310\214LH\227r\214\034\211\013\377\244_(\000\233\306\336D\253@\255\244-+E5wHX\211\354\334\007\270XS\221\322\352\371\325\003V\330V\022\\F\221;\207\346\256\2453\266FU,uu\314\202r\273\\!7_}\316|\206\223\213\300\225~\230\"\304\025\001;\236^\272\362\335\344\322\243VmE\331 -\236t\323\026\364\2509\002\264Bg\t\032\325%@\364\3618\031p\364`\343\025\"\324|p8\241\341\311\313\353CZ\304\331J\323\233\261\321g\342\341\306\330\344\275\004\203\001m\273\034\033\202\203\373@;\277r\250/\035\027\2011\013^\276\342\3742_\272\212\260\233\242|\356\324\266\2148\304Ft2-\024@t\355,\273[\345\321\356\021\236\355\250{\377\371,\311X\334\225 \"\211\334\177<\016\2343\310\005\321W\257[b2\330\034\335x\033y\273z\330\305\240\010*\205\313\361\240\260b#%\364z\257\013\367\016u\017\304[\001m\361\330x\240\371\216*\221_h\230\210\325J\310\300""\\\350v\017!\240\336\n\251H\374ex\323'\320\237\352\3434\315[\360\t\201\316\030pL\340\227\264!\352T\375m\036\335\335\365az#\345\2409\330B\302\301\330v\257\214G\264\3340\007W7\351\244R\232 \202{\303T&\303\227\017\255\362\200\241>\016@J\241\036\200\340p9\313\"r\204\201+ge\t*\000\022\3078\24656\302W\216!\210]C\003\205W/\246\005\371\027 \034)&\240\330\333\017[\010\237e\306D\256\344BL!~\304\235?1fA\247\355\017q\234\020k\252\326(\345S-!\256l>\256\352Z\021-C\210S\010\257\262\276\2524\366B\306\254\220\242\360\030\267\376\033\335b\356\261\220zm\227\336\033\324\031\205\004`\304\302\204\360\220v\017\001K\225\204H\376\223R!\2513\004\232Z\027\274\3058==\367f\331\022\272\355\036\352\231\004\025!\334\005~w\373AHv#&Y.\021\202\350\025\255nX|\366\010\2044\016\377iZ2\306\021Wq\322f\246\007\331\346\325\316[H\016\262\350>4\325}\252\2100\210f\276X\205\231V\tI\273\323\202,=\2576Hp\301\024\227\255(\210\314ks\355\227\004_\037(&'t~\366\031\3002E\010\010\003\005`\034\217\026W\224~-\250\n\346\363\202\222\0163B^M\021\314\201\374\315\322\311\262\246\233\350\274XB\335\352}{1\214\345U\207\020B\301\304\321o\216\n\221\350\350\266\200\331jk\370$\236\374:\265\333IT\365cE\004\225h\333\252m\320\334\372[\261\213\213\216\357Xmd\212\016-\325w\246m\000\236BD\356c=6\017\320c0t\207n\022\023*\r\222\320j\020H\213\017\327d|hD\2635\007\212\240\263$\\N\231\314\327\rKN\226z\222\221\341\003k\314\201\037k\325-\354:\035\304\341*;q(\370\030\305\344\004\353S\225\026\2025\025(Y8\262E?\001y\237\267\253=F):\r\227{\312\270{\375<=\036\265t\372%'\034\021\016Z9\n\230D\200\237h+\303?\375\230\211\324\310D&\025Z\270\003*\232W\005\202\030\014{^\002\265\302H\306\233f>><\227\242\236-\016\275t\246\312~\201\301CG\310E6>n\261X\207\331Y\013\"\217\234\030\254\020\325\330\024\003p\307b\007\310\377\344\236T\262\3433\347,\234\321_\254\237\027F\260KS\027q\264b\326z1\250\265\210\357s\036\024\005\231m\364u\323\224\005\245EG\004\220\371\006\272\350\274\242^v\350\326\270z;\1773\320?Nm\334\236\307N\343\027\020NI\014#\220d\271W\337\320\361\344es""\250+>\351\275\360$B\362fUXOC\251\216\223\235\010\251\345n\007\217\322|4\362](\037\274\025\2272\206\324\302\260y\233\327\004fM\355\253\322\200\347J\322j\243Si\300\303\307\332\220\237x\356$\335\316:\207^\203\327\322&\"\244\024\313e\3559z\330\323A\004\325\203Dds\023\251\2119\206\2224s\027\2724\036\266X\352\235\034T2Ir{3\370\247\236\321\344z\216\350Id\221\366\234\246\262\324_\364\265\2514\212\206\3626\\I\362\305\362\346\336-\364v\276&\217P\332}\1778\316\204\010\361\024\207\224\210\350\277\276\324\330\365\005\2068Yonr\305\353\200\302\215Or\031*q\227pi\202$\364\004\255\244\035\352\004\027\222\361\201\345MeK\270\000\351\036\003&5\334\207x\253?\237rBB\037\001\322\252\006\323\233\260\0005\004\300\263\000i\223\316\336\024$z\005\355\264\000CF\350\355\351\3421\252T%\265\345X\035\232H\254\001\261p\027\314\346B\322jG-y\312\204O\331\t6\357@\341\203$O\316P\262\301KhM\037:\374D5X\023\207\234|\230\002\242\352b\272\342w\226\344\332\025\241\374\247\350M\017\255\353\344\354\250\336\236\035\264;\223--\275\237I\302\215p\220]\312\256pw\230'a\257\320]\034C_\222\357\030)/\370\251czz@W\004\233o\030\375'\317\303\023\222A\323+`h\364\260\341=\203\260/\024d\366\373\366\236\327F\021hX\3529Wo\253P\300\223\034l\237\034\300\304\024G\260\207\262x\303\374M'\"\222\221GWU\257\013\261\2124\211\210\201|(\202\252\016G\353L\203\367\247\267N\216\3242\010`\021\276\335\002\207M`G\021)Y\330B\275uE\313d\376\356\204\326v5,\301\313\252\275s\210\326\340\354\002\\\216\3206\307\317\367\327p\244\311\252\245\341\265\371~\267\324\250d5\271\177\177c\304\244\211\312\253\260\242Cf\357#G8Oq\207h\354N\0347k\335\271\252\323\235\212\235\311\241\334\000]6\373 \277\321v\254\351\352\223\254\306\312Y\317\327\0358\201\263&\003^\331d\265\210j(\020\277\336\014\362\010T\177WHJY\360\230\333\022\265\357\367\215\325\002\305p\322\306\036\002\251*\251\362\n\020\204\307\230\224\374\202\036Y[);Sr\023<Y\003\375\330\305\2564\273\036\350-\225\371\266B\267\263\357\t\255/5\177\257\026\351\277\273U\373d\337\354\212\311(x\357Yc\035&\257g\0056'\2016""\371\331\017\334\316 \341\n\375\003I7\016\257\032\244\360[\244Y\2465\355s\224+\227\261>\344\216\222\221}\373L\2670$^1\2734\005E\223\243W\215\000\210L\354\355\267q\210\324\026\323\031\360-\177[\312\334\242\014\210=\225ofh\216\307\034\311\367\350\337$>\203h\205.+\216z\230\266\234B|-V`z\310i\211\022\255HP\002\275\204u\"\036\306\214\365\212-y\035\035c\333\032\3407w\202\242\236u\272\036\340#Y\3442rb\302\355\335\255\330wo\242\304\004\312\305UF\370\330\332\004\307\005\214\304\275\344\274<\374\244^\355\370\341\003\336\313\240\t\370p9p\367\255V\251\361\235\255'\376\316\031\211\250\261\333\n\265\330\343\257\206G7\3518\024@8Kq\360\013P\256\326[|\225,D\307\001qA<i\004\301\241\350\274\216\034W0\024\021\215\274q\203\323\322L82-v\027\370\264\262\252#\243\327\230m\331$t\335\207&N\200!\223\272\372\356\265#\347\251\303\271\256<\336\212\223A\016\013\247\017\211\300\261\263[qbhZ\330e\264\355\223pe+\351q\234\255\004O|\317+\364\3452\352n\013+\013\032\006\t\010\323n\256\371\210\005\224g(\003\2215\237h\337\206\201>z5\333 \262\307\320\2735/C\316f\364\267\004\177;\347\034\324\226\264^\002\313\3702p;\373\243\032\276c\323\322\n\006\3607\300\037=\003]-\033\n9*VE\342I\370\322`\210]]\266Q~\341vi\014\034BgJzQ\356\025\3114\2228\374\236\324q:\353\357\003\3122P\330D(7\033\332\311\306H\236\233\023\326\242\217\307\212_i\356p\225Y\343\262-7\004n;Y\222b\262\n\035\315L\225<@g\364)\007\267\326\330Y\266b\251\230\206\340\227\316\275r\024tM\030I\254\344\261\227\306\313U&1\222\350\340\240\216J\025\010PDb4L\324\363\347\017\007\360\227\010\376\222\001\332\r\353j?\020\214|8 \375\225\010\0325\311>\3136:>\033cy7\301\207F\010[\222[b\032S\201x$\324\372\310\242\303\275\363\231\202\367{-\205\236\206E-\002\352h\224\177\341\345mxj\020r\374\305\024\217\216\032j\026\213\321\306\312'[\r\247\244\246\304Q\014\254\372->*\346vn1BMh\2669\267.\003s\361\241@\360\331=\223\3216\347\345\027>^\265\361\035$\333\265$\r\322\341)\262\356\006f\253z\036\350\324\336Y\305\027q\372<4\277O^Z\254YH\323\247<kP\217;U\244Z\031?\247=?o\210\205Y\374""\317e\371~\231Mi\0058\035\263\004\017\024/\305&^r\316\235\370\256Gg\317\002\216~&e\315\273-Yd+\310m\252\215jX%\220\2701\026\237\007\024\253u\264\307-\017~ \366\275\224/i/\377\220e\204\255.\r\033\327\244*^\220K\205\022\244\001\301\354T\316\352\006\302w\2519/\222\000\nf\377X\364\003\305(5=\376\223\365\030\337\\A\324\360-K\370\241D\263\226 Z\325\000\350\201\264\303N\330\242$\320\225\315\317\246\262\rR\364\013\273\016\246R\360}\222\262\205@\254!\326^ba\305\037\023\362B\357\304\3270\225\214IY\244\214\026\024>Q\364`\3503\263\022\245;\325\352\360a\3064A\027\335k\214\371e\\\225g\266\223\344\333BR\245\356\0064\t\220O\257\337b7\301C\006\221\354`VQ\037\352\247f\344^\000\000\274\202\215]i\200\266\2510k\374\025\242\005\337\200\373\353qb\2014\277\251c\253\213\\\266\r\023-\264\216\220\217!sw\325c\n\277:\321\262\325\013\014x\013\007\210\210\217p}|a\020u\244\312 G\320\304\220\200\272\033\271f\333\217\334\274;\275\376\376l\325\343E\274\307I\322%wx\333?\336\346\301\327A$\277\364\004Yl\343\245d\236byq\306a\227\314\264\200\340\020\256\365\340d\251\253\021\264\242\367\177\273\t! \024\257\265\206\006\277)Y\3778n\313\214\354}\025\034w\362\024\3327\200\260\322\305l\246Ks\301q'\340=\257N:\375\202YD#\254\306\"\206\021\004\032\332\320\\W\005gD\032z\214\360l\270\263\374\002M\226E\341\016w\346\311\322\"\2576\305L\200\014T\324\253\364\351\340\314\256%\341\354\260oV\ta'}>V.s\317l\314)\010\021sl\336\260\034.{u#\t\202\262[4\014\271\344)\037\037\2567J0\261\236FSg\3209\316\250\2273\033<6w\347\226>\002;kDc\327|U\030\222M\2446\353P\243\336\223N\324\365:PlI\247\177\324\035%\334C\320\023\014z3\030%\360\342\312\234\225\214]c\353\232\021\247\314N\206\177\370\220\004\365Y\027\332\337yC\n\306\247\301J\2229\202\232\334\336&\354\362n,\270r\233\206\312\261\342\020oJ\352\037F\005\025 s\270\272KW\254\210\260v\032\026%?\245\001\362\310\3636\210\345\230Y\244\007\353\231^!\216\334Jp\002\240uzz\253\013\221\\\025WK\274\007\"_\343\024,\204\370\271r#\236\307e\303\005\371\347G\025|\273\n\342TGy9L\273J\333\026\350\3042Q""\321\365\324\346-\250\007\301\265$]z\242\004\324\262\366py\212)\257\245\275\0241\344 \272\320\203\205CIs\374\274\334ga\271\330\247\001\316\243\2546Wk\315\312\220\267\006\311\3466\023m~\2332^ah\263\354\263\256C\223\341\003\257\020~\315J73\005\321\353p\0165}\254l\027k\271W%\207U\365\325\002\257\034\213M[w\004\035\200eEU\025\014\315\236p\004\035\207\236{b\205\276\331r/_f\030\340#\016I4\236\020\222\205\211Q\223\0016R\356u.\360\305\003;\266\203\227,Z\026\254\370c\232s,,\206\316\362O\006+kV\355k\366T\343\323\2722\253G\025\270\203\027\031+A\303\373v\322\265\312b\021\253\302\"\210A\020\222\265\203\214\203\366\001\353\341\362x4\210\201\320\234\223\005\257'\007\033\301\317\241<\277\313\032(\343\nf\031\372\036\262-\237\307\007\360\203\030lL)7\364\227M\376\n\024\226n\341\340\203\276\311X\251\304+\250m5+\221\326\315\026\337\371A~kaT\2252yB\010n+hf\367O*\n\243\271Y_\254zf\247\363\310\014]Z\355\032\017j/\235\207\355\305t\205\363c%\t8\306\370.=\206\360S\244W?\"\004\207h\324\3346{~\335f\341\000\354\350,[\303\274\224K\2434x\3445^\312\373\303\016\337\332C\263o\203\302F\216\023/\261\005\031\324\257^\272!\330\255\244\354\327\330\375\355}\"p\323+\310P\037\004~\230\307C\010\203S\026\005\030\353\244\372\201\272\352qCMNd\310\020\217H\300~\006Y\236:\265\226\262\034\202Z3\226\270\223\032\2520\341\2279\327\207\202\3771l\2414\271\377\341\267\250l\377\177\202\245\327\247\246l\222!\266\260\356\0132\315*\327\033\332\216X\260\252}%\027q\326\337\303\237(\025\213\367\006\221\306\006\036n#\037p\013\036\217\0214\220\0302P\004\003\331\250\240\337\216\307M\247\277\331\375\212\314\035:\203\206\310\"\354\206.\311\353&\200\231\367n\310U\372\210;\r\324s2\010\313\243\243K\025I\233F\355\260\213#\200\325K~\342\303/Fr\2666\003\307B\tZ\t\202\323P/p\202\n\265\364Q\303\303\352\220)c\000LHl.JHF0Aw\367$1\324r\222\233\373\357 `(\254Mo\202d\020\007\367\223x\257\340\340\2365\243\262\030RZ\204f\017\325\370\207\201\323\006\316\3357u\016\334\341wi7\372\250\033";
11208
+ PyObject *data = __Pyx_DecompressString(cstring, 5540, 3);
11209
11209
  if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
11210
11210
  const char* const bytes = __Pyx_PyBytes_AsString(data);
11211
11211
  #if !CYTHON_ASSUME_SAFE_MACROS
11212
11212
  if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
11213
11213
  #endif
11214
- #elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (5684 bytes) */
11215
- const char* const cstring = "BZh91AY&SY\214y\016\265\0004>\177\377\377\376\256\260~\377\377\377\277\377\377\356\377\377\377\376@@@@@@@@@@@@@\000@\000`\035N\337c\347\274\361\352\366:\354\032$(\002{*n\272\333\036\355\334v\346\202\356\336\356\000\343\334\201W,t\034 \024>\216@\350=\003 \000:9\303'f@49\335\326w\303\004\222\024\320\247\2426h\247\264M\032hi\017SOI\246\232\014\200\0004\001\246\203\010zA\352\r\032\003M\222\t\020\232 D\232\023\324&(\332e\036\211\232@\036\240\030\215\000\031\030A\220\007\250\323\0204\365\003F(\365R`\214L\0104\300#\023\020\310b`M4\300\23212a\031\030\201\200 \304\000!JBOT=\020\364M\r\006M\0324\001\240\000\000\320\000\006\200\000\000\001\240\001\022H\246\004iO\324\324\321\240<\325?Ry\023\322h\003\324y\023\3224\017P\007\244\000\000\000z\215\000\000\211\"\004\000@\2314\3205$\374JzzSm(\332A\246A\240h\000\000\000\000\003\322\r\034\344\215\323\212\310=\326\004\2656u\235sVS\242\211\274\351=\357\364j\351z\356\277\\\330u\313\327\3311\tL\220\247^\177_\272\034\326\0309\277\301|\035>\371\332\341\210S\021\007\350\260\201\202\222P\241\022\217g^\325\226$Z\366U\n\3702\270,\370`B\024\260\"f#\221HY\271!IE\0319g\200\032\310\325\310PC\221*\224,\2244@\014\214E\004\251\r)\003I1JQ\022!,C\024\r\010\320L4\322\224\241\251\324uG#\227\364s%N\353\344\216\313e\344\022\375\277\254\301\333\362\030\224\322\341\201\372K\371\306q:\270A9\004\212\232\374\236c\203c\370!\010b\363\311V<\273\352T\276\353\313\302\270\254X\200\030\025Z\230\360\0051\356B\317H\204c\024v\2648$c\346\347[~\034\014H\234P\367\334G\256|c\275L\370\004\201\315\326\324#\r\236\264\036\006\t\346\214\264\370\213\202Y0\314\357\356\210\242\266}Z\366\266[\363\2564\334D\020\315\357\177\357\365\022o\227Q1\023\364\343\344'Z\300J\023\313`\262\246\022!\r0\242\\\242\210\027<\205q\324\036\004\r\370\022+s\247\236]\\\263\261\217#CvSg\030z\223\312e\014\241A\342{\313\025\355\246\260=\213\356\033{\310\226,RT\3150\326\350o\315\275\234\257>\233\251\201\373\037\237%\344\205\001A\021\025\023\243\301\010z?\r\364\277_\276C\267VJ\245\356\341\214\222[,\2645\353\r\250""\363\035N\236\226\0304T\354\305=\007C\026\251\320\3040b\031\205P4\373q\264\226\032\n\201\252UD\243*\031m\t\272\rT\271\0379\177`\224a\276\300\360\034\216>\334\217Vm\337\242\305\237b\r\2626d\326\247\365\234\201\3558\002\033(zH?v\351\\\312T\210I$\237N\004a\373\327\272\206\364i\022\220\007\026\251$\203\303\210\017\264[\362\024v\244\023\361#\323\237\311\220\274Z\224CcD4\233P6&&\026\253E\260\225\315\346\302BI\325\264\300\322\241\231\362b\353\200\366\017K\020\356\260\315\264\325\200\332`\330\341\240\341F\230\303\241\312\312|\362\341\365\234Is\237\003\266\351[K\220\350\342\313\222p\256\013\215\353\223&\215\240\033O\243D\204\261\337\013\210\204\315\242\033\207\326;q\304\231]>M \344\343\243#R#\205o\035[\006\307KW\0316\235\204\272Ab\254a\222d}\240\355'\005]$\360\030\022\"\033,\205\020a\204\310\326\344\020\234\243\317\333\277F\346\022\347@\367\227!\327\025T\034\230\353W\302=\r\020I\021$\370l-\267}\214\021\314\255\r2p\303\233N\350\336\005\337\200\2464\256$\227\311\272\014\260\301,\256\273F\306\017@\305\266\300\226\177\014\336H:\354so\342\033B\255j\020\266\364\207\000\007(%\003m\267\013]\201\351\213.L\225\240\237#\r\200\325\2201\024\266[ wM\373\000p6\363\311\340\017hj\241\201\320C\355\321\320\355!U\035V%\215%\313\235\222Y\265\3602\352\334\364\360\006r\307\023\261\330&P\276\005)\200\363\300I\325\254m\360\202\361K\217O\253\267\226\272\037\233\216\255F\330\234Z\207\211\027\232h\315\3673\013\236\305\357\205\201fp#\013\017\t\260\320\306\346=\311^a\354yg\325\354\006\3140r\275\002\340\023\014y_n\014\311\354Xe\311\350m\231\262d)\306\240\254\346\326+\036\034\030\365\014\307r\005\251R\242\034\371\362Ou\214=\337=\365\235d/\304\342\216\300\343\272\316\335f\231\031\3525\312)!\n\200\265\004\360\";\216\354\003\321\273g2\266\327\236\010PD7<\\\312\010\346\2038\371\rU\033\301lo9\351=\274\360\233M\252\333=\207\261<b\013f\332\212h\321\222BY\274\r\215\r1\262v%vx\274.\3656#\252\342\342\314e\370o@\265\220d\211\0161\\\350\224N\220aOa\320\371G2\265\313#Ei\241q[>\\ni\211j5\000\234A\013n\033\325w:\303]""\224q\215\264U\205G\030\336\036il\313V\361\nY\3219:\225\314\357H\327Px\010q\3445\t\202\345\204\216F\306\307\201\3645\014!\204\261\311\310\345GX\353\307\260\241N<!\352(\301\006{;\306\224\211W\034k\004k\314\223;\271\230\\\371\371pU\020]\224\235\350\277\035/\033\206\302\3556\207\r\322\301G\022\301\204Y9G\030\343U$\222\004\341)j\035n\3272\346gK\200M\254aD>\270{S\343O\275%W\325HQ[\245\373\363\347K-\242\223\2216i\005dy\231\204O1\331\3065!\310{\336\317;\017\320\337T\305\032\"!\377\354@\336S\330\210f6!B\224\376\206\307\337\010\377\271\025]\267\274\370\267\276L\233\002\201\300\323G\327\372p\244\250\032&\021(b\230q\324\235\3047\322Q)\224h\nj\010\250\010\351\217\326\004\315e,\361\213\\\261\233\005U\204\261)T\261V1\255\307\013\267\263\322\027\005\036\313Y\376\237\330\333\340\231\217\243\237\017\260\311\371\240\251,\024\317\235\307\005_~\306\273\020\037\013w\"\027\222\345\310\343u\010\022\243\231\213Y\n\230\304\344\031D\2054BR@\300\220\300b\221=\342+\270U\253T\251\311\241=\303\340I\321E\240\331\261c\263~\005\262\250\321\205\211h\363lf\335\261:\232a\307m\301x\n\036\200\037\214&\221FHdR\006@\3222\245UT\2216\217\317\322yh\222\241\346$\226\357\365\350\241\314\312\200\267\207\314sI\035\010j\271\340\344e\036\341i\201\355\366\300\360\007\321\336;\326\341?\272\205S\274\037\002\010@\202\220'I\362\370#\303\243\245\346K'\017\213\355a\245:\355\232f\313!x0\232\363\003\203l\214\250\241\327\021i\0044y\230\014t\320LCm\266\021\230\247\244Q\tS^\014\305CP\251yxLh\251/k\026\223\021\334>o/\233\301E\367\3605('\272\317x`\014\340\023\2228\243\205\317\256\216h\361\006\377\316\217\241\033u\034'\364\020\367r\361\361h'\276\370\336\3729Z\326\371j\256\036h\3471\211N4y\337\264-\006\245\302\336\242Y*\017\263\336!\301\036\210\034\033\372\211\334\300117[\213\034\355K7?/*\036\0322h\301j\312\003`\260r\214:h\372\321J:\272\261u\341\205\347\2470\325\200t\304\344\225\215\271\237/.&8t\361\274\366\343\036B_8\354pkFOo\336\013\nM\215!\2051\303\033\t\033\311\n*\232\231I\002\261\252\032;\212\021\303\004&\341x\026\2676\350K""\301\252\232C\001\006>\026\373\2105uoGu\313\237\201\244\023Z3\255\1777\250\204\006*\006\330\257|\020s\354\357\003mu\310,)\312\023\222\365+\306\377L\\v&\356\315\265UP05U\333\010\033H1\275\215]z\373\020(\347\312!\306\200\354`\371\211\231\327\250p\217\361\007\347\014SM\335E\250:\275f\242\347\270T!\377!Bfez\2624o\344\264$!\020\350\006\010\\ <\374k0c\"\021\221\211JQ\220\210Ivn\026\361!\276BBB\244\222I$\270!\367\365\003\336C\0005\n\220\354\373\201u5\030\357\352\200\344\367\004\"H\221I\025\277Y\333\344\023\345\224-Zj\343\331Jl4*\022\022\022\021J2\373\241a,K\234\336v\022\326\304\347wG\317\220\266\233\r\276c\273&\372&z\320O$$ \304\002\020\035F\237M\225\260\314\204\313\313b\340o#\201d\350X6\022\344\334+\243\337\356\252\322/\020 \202\t\335\t\301\242\003\2544\036\021`\022\205r'L\017\346M\246\204\301\277\303W\313\206\244\212\\\003\316P\037\037\346\252!h\334\024\330\323\230\210\207 \264\265\265\330\213\311\013o~y\310\255\206\314\326\273\355\301\252\006\250(u\206\030\027(8\300q\321\204\300sD\236\372\026\236\004p\203\322}\3669\314\306m\031'I\002TS\035)\272\020%\243\324F\t\317\265nf\342\273^\351\267\22726G9h\341\247[\010t\0008@\375q\036%k-\345\223\266\010\210\210d\020\202\"\"\023!\262!\270Q\r\341_\246\363P\336{|\013`\242\265\034\210LI\014G/\207\036\215\353\020@\217\213\337\334\343\216\254\360\243\273\355rg\007\300\210\312\355\371E\013-R\310\323i\212 \r.\344\326\260\331\355\004lIC\343\217Z\361a\231\224\033\020d\352M\367v*\346\007;\031Z\301\225a\223(\262\3046a\226\242\311\3019\326W*\326\306\371.\225j\265$!SM\246\323k\206\252U\356\312\r\325\031\335FvH\341\242r\241C\224\306\314\272\317\0138\3461\210\313\031TpcA\213\200\201\026\324Q\t7mHb\341p\004o\254\230\235L\275\025\223\023=\026\025\247\003\036\320>\t\303\033=\340G\252\002D\000;E8\2048\n:HP\034\2310\220\245H\232D\246\204\245r\032\014\251X\220*\222\232\022\236\024(\273\036\250C\210\250\035$\016\374\0219\2471\020\341\310\320\013\\\211\376\335\004\214\"2) ~i\203\201q\210\227\tc\020\235\204dNZc\376\245\214\273Pj\020\212\361\213\257\014@""\234\310\007+\256\"\026\\'\031\250\014\375L\005\204\r\311 )\322\363\330\233\221\364\211\341\261\320\251H\360)\001\374z.\246$`%\373\247H!\224(\362\322\277H\250H(=7\020\261\331\332\177\0229\340\233;\004\177f\316\270q\r\016T\233\321\272\357\201\300v\275\301\321\026\347\263\323\2737\375\360}\330\337\010\335\370<\340^\310\3527m\013\001\004 \033\004\311\363\035\007 =~8[\002\234\t\034\021\245K\\\263\005\346\r\207\\K\333\353_\000\274\022y5\002e\226l\352CqC\353\024\270o\261}\376\031\274\357\0353}*\3051\364:&\207\300\204\010M\203\325\266G\214\021;\026\215\210\224\037xT\314o\200\240\230\342\205\221\260\322\207\2322H:b\352\340\034\351\031\000\220\232U\002$\206\326\315\310\325Ib\304\030\250\024\001\014\002\305\241\200a\326\351$\325\022n_\314\362\020\311\220\310\014\246\212C(\206\036d\276QI)\235\275\275\0241\346\n\0044\t\215L\220\3108Q\304\206\\\230J0i0\351\003\327\245W\324\006\300\370\3314\202e\023?\255A\327\351)\034\"\005\275{]\350<\201\340*sF4,\260^\230\220\220\262\020\021(D\246\200\2127\311\326\t\336\340\033f\261 81,\022H\234\345D\002C-\2640\\T\251B*)\0356\353w\222\355\260\247\210\375\234F4 \235\217\304\t\303\240r2\332o\246I\327\241A\003\352W\311\216O\003=\315\200\n\001\316\007\000\245\325\327\331\372+Qw\350\363\237\036\3657M\273]\273R\316F\304p\021\312&\234N\221\247\261\314p\241q\361;\365;\365)hWo\260\256\373\314\014Q\351k&\316\300qLC\250\203\221\240\232\024h%\r\242\321r\340{\303\036\355`a\003\\\321s3\234<K[mS\225?\0321\356\351j\250\013\204\034\275\013\215\332\306\253\000\304\300\265\250\310\3229j\0306\366\326B\226\206\202\221\252\036\303\224F7\204O3\214J\274h\243c\030Ju#\272V\247\223HI\020\206\200M\355\024C\034Cm\240\323\017\317\235\204I\244\320d\0068-\002\327\252%\301\220\033\302\313d9 \024\032\307S\025\014\210\272Y\017\352\0253j=\204TKH\227\311r\311\324lna\016\232\304\261\346\030\r\322\305\003\203nUn\014\006,\013\201\235\313L\314\313.FW\2559\232\234\313\n\354\316\252'\317\367\001\320\374/\023n\020R#\226}FZ\336\003\274:\035\n\340f\251\273S\306\3026\031\351`\201\260\304""\203! r\224g\347\325\326\020\211\244\210\352\007\240\250o\311*\305Q\257\035\2668\030\206\32337\241f\200\235\033\n\032\2109\203\326\274,\373\305\330\0370D\010B\301\213\025\344\315I'\t\300\r\312t\223\256\304\031+\004@M\250Y \206@\337\217\264\001![B\300\215{\020I\234M|\265\r\360K\240YN\223?\244\240J\372{\220\302\3348\2431L\002\365\014\025m\000\"1v\352\333\2741\0146'\366\301\030\244\007\243\203\343\33670\223\232u\305C\355\261\024\221I\025~\036\357\320\362\n\036\021JxWV\334>%\371H\357\007\332\201\337\200\2478\215\365\001\335\371\032\310\010`\010\010\n``\000\004\000\000c\000\000\000\r\325G\212]b\2351\n@R)\3566\273\246W\217w\016\000\271\241\264\326\000\366\243\020\001\255\366\264`\220$d\020\320\037\222\276]\232\241\202\363\266\264\303\"\320\232jMNdJ:g+\354Q\302\017X\033\366\260$c\026A\204R\003T\254\304\201\014\302K\002B\232\340\020\372\340\240\362\023\2563,32\206@\"\201\203~\217@\217\003\257\345\213\246\260\370|\277\037\273Y\342{\316(\362\277B82(\300<F\200}\3212K\322,=X\232\036\245\270\036\221\216\315o\272\305Z\007\035[\220\322\351\347\302{\t\355\017\035\242\207\3441\271\344r 0\016\202(b\204\002\310\025\001\336\222\311\332pGQ!\217#\302\372\264mnm\373\345\3169X\260s\304\252\013\362\007\240\020\034R\265\257F\366\243\2762\023\325J\034t\306(\001\354\022e\353 t\344\001\244s\333\207\317\013\237P\321\014\004\366\020[^\220\035\335G\213\313l7`bW{\342\313\366\375\344g8\266\027\200\361\364XG\347\017\022\255\220e\344\0052\217Xt\345\260\355,\343\274\307\335\345\004~\306\235\337\323(\3557R\022!\"\2474\350\351\345\201\205\260\036\3741\306\240c\203\276\213z\241J\035D\013vQ\210\207]rS\227\224\035\376_QEFH$\200I\010\005\250\246\026\032\244`\202d9<\241\352\227\354\037qts\355\014\345>K0\021 \022$\005/\000\250#\213\220\212Jc\202\341)\306/\247\274\215\324\266\321\013#\235\035lg\021\312\035\331\"\306@ \210E\024\204\330RB uq:\263\302!\201\264\030q\020.\242X\224Y\0013\332\201\341\351\0079:\341\314\254\034T\013\007\305B'k`)\203\250\211\3353\362w\324\242U4\323%\025W-kQUUU\\nr}\344Z\266:\270:\302""\r\003\253XI&Y\315<5\005\257/k\314zB\260\321\033\243c\2224\215#x\232\236\313\216\314\204\240\255\210\024 t\031,\n\213\205P\303\031P\311R\t\261\200J\217bEC\242\004\214(\033\301\016f\244\250H\231\035LL\004L\3056\2054 \240(bD6\206\302X\265\243\002+\3538y\366]\01425kK1@\321\007T'+\320\203=\346aDb1\010D\235\2324\350LL\301\301\265\301]5\031\335\001\\\200 \346@,\216\024\362\350\314\346\034\350\344@\r\0012\266\200\211\251e\222\221\203\264\212El\264Q\254\224\260\227{\021\320\005\335\021\277\211r\310\324\000\205\256\007\322\036\211\267|\014\304N\226\013\361\"\360{E\240\014\004\037g\0201\017B\277\225\025\023\325k\250\032\"\227\035\376\000\350J\032\"\034>bQt\010\013\350\013\216\003\340QYDpDJ^`t\250\027\376>\216\343\342\231\032\3170\214\244\336\347\370<\350\322Z%\244\ri\201!\333s\2619\237\0226O\014\305\326;\rB'H\005\006\267Pa\226\240\014\234y\177\352\270\237@\236O9\261\335\264\332>c\316\003\344\022\003\200\006bE\014=\002\375\326>/\007\024>\257\235t\205\301\001\224hn\rx:\013\254IH\006\2019\345D\366GE@}\244\026+\023^e\374\262>\327_\202\245\303q\236\304kDg\331)\034\231\353\032\306\311H\036d}\010\207\272T\315O\202\237\001\370?l\242\245\303A\200\302\023T\252\341\230\231VA\232\022\357\364J\306\224\241\211;\335<#Z<8\334L\030\276\244r\006\257KGR\006\231\300\227\252\221\265`\007\306\007\251W\271\260d\341a[\362\350$\305q\027\320\327l3\316\256\021\004\370C\264H8\220;\262G4]\302\006\310\033\302\351\021\275UP\2613(\220\2109]\304SUp\272\205\354\0179p#\313\306F\231\006\343\030\273\n\330\2607\250AZ\3217\024\212\031\024{\260\025D\024\307\252\030\317\307\263u\226\326G\356\025-\215n\213\034\320Z\036\260\024\315A.\001\341\204\236\003 \037\307\024b\022\\J\227Q%\322\241\303\330`\027q\207\004\270 \210\234%\r\313\270c\206\254\201\034&\240qekQ0\017\023#\217\224\205\311\305V\"5\020f\252\312\t\305\033\\\216\210\321\206\210\311\263n\231!\214\204HI$\276\213\321\214C;c\263y\311^\024\206\2218\016\027\247R\326\240\362e\334>T\271GX\344u\225\353\271\013Bh70k*IGA\031\021\337\007`V\314\000\224\0318\363n\"\212b""\240\334\356\r\303A\203\210\207T\3231B\324\305R:\254\307\234\r4\340[\002(v\234\014\341At\013\351\331:\001\376j\027d\305L\014M~\006bp\206\353\353>\244\272\006\350\213\253\223H\334J\317\"\321\010m\252\327e5\027\022\205H\306#+\0243Vi\032\234#\000yh\320*\207\230p2\031\000\321g\022q|]i\013(F*\233`\323mn\010E$\321w}M\256FE\362,\233D\317\n\020\250\000\330##\002\010\351@\320\272\304>b\000\006\223%{\314\n\0331\003\004\211\260\206\210\336\260WU\365\007e\314dF\021`\023Ti\212F0\216\305N\250\200\310\203\272\001g\260V\212v\030\303Y[\346\270p\242\242\230\205\225\244-\001\023u!\2710\243?j<\365\202ZI$\010\010\035}\033\273-J\305s\035\202&?\200m\301\035\346\230 T7\005#\353\202\346:\302;*\215\367\275\213\220\014B oG\340\036\220\324@\276\010\201gq\311\256]J\371\317\277\020\335\264]\345\003I2\022b\t\202\233R\220\017\024\333\254^\020d\244\000\364\022J=\003\311\003\314\002n6\223\277\277\311\017\330\273\324\364\341i\334.\377\220\324\247\021\272 v9\t\304\214&\311\211\310 }\240D\243;\037`\37218\375\033\365\027\267\021\363u\231c\224\014\261{\252\314\006@|\351\005\272\300\017y\003\253|\r\347\227\235\007\240\271\010X\2245\256|\227Tx;:\301\215\006f\nA\315\006\206ToM=\371g\006\221\246\213\244T:\002QQ\016y\245\314\r\250s\220\\\354\\\232\020\260\267\2150l\270\202X\206\t\372\3048\310\312\311\004\006!\266\316R\31244\215\230\006h\216@\371\270\312\246\240\n\323BZZ\244\026m\034\035E\321\355\325\362\026\001tGD}\000\226\265\200Mf\325\003\243\347w\243\262\306f\214L0\256\322\354\264\2654\332inj0\223\220\217Pa\364\276w\325\3733\374\373\177\037\324\177\304\336\013\324\\V0\377\223k\215i\313\227\235\260[q\251\304\252\313\313\305\272\356|?\n\373\243Xp\277U\266\201\264\277\300\373\377\351\002*\227\204\201\272~\007\002\304!\314\205m[X\214J\243\265N\254O\310\353\327Yn\"\313\245\004g\351\024\227\224\272^\223\256\003_G\365\207!\257U\360\366\327\210s\266\315\305\213^\270\341\265\267Lk\006\221\242\340\336F1\222\270fB2\317\261\242D\226~A\227\210\216\022,Y[&W\251\027\224\263k&\316H\214z\305}3\014\366\237tf\326$E\375A\333""\037M9\013\231\204\373F=\215\272\225-\355\025f\033\005b\3553\362o]\316\247:\336\005Gx-8\260\305U\322?\023su#\300^\2241n~\2429\030\351\307%\226\212o\3509\035\217\3622k\263\263\300\243+h\306\215\314+!9c\3022\256\202\376E\2553:\177c\360\013\271\"\234(HF<\207Z\200";
11216
- PyObject *data = __Pyx_DecompressString(cstring, 5684, 2);
11214
+ #elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (5737 bytes) */
11215
+ const char* const cstring = "BZh91AY&SY\n~\346\227\0004p\377\377\377\376\256\260~\377\377\377\277\377\377\356\377\377\377\376@@@@@@@@@@@@@\000@\000`\035\216\371\033\251\307}Z\226\3405@\000s\337w\235\343\356,d\330\3679\016]z\373\336\007|@\037^\366\322\366\305\305m\255Q_f\362\006\366\031=\334\247(\022\257Ls\326\355{\235:\203\240v\356\367\275\360\373\204\221$\nyL'\241\204Lbjd\3232\232\0324d\001\24044bh0\207\244\036\240\332\232h4\331 \221\023A\010$j\236\324\310\200\304\000\320\032\003@\000\000\000\000\036\240\r\000\r\001\246\324\246S%\000\032\032i\24024\000h\000\000\r4\000\000\006\215\000\000\000\010R\221'\242\233&\223M\r4hhi\240\000\000\001\240\000\000\000\000\000\006\200\004I\020\2312S\325=2\247\3454\237\252~E?I\251\352d\36524bd\033H\000\320\3204\000\000\000\032\000\010\222 D`M\004i\241\241)\371\245=S\315M\244\217S\324\311\352h4\003C@\000\000\000h\323\324\001\335#\204\3462\017\205!-}\315\227\261\261\031\343\307oJP\204=[\032^\3330\3326\336\305\273\214\230\204\246HS\255?\257\335\016k\014\034\337\340\276\016\223c\266\341\210SUG\321\002\210\r\213#Id\362g\335\211\210\246/\221\270\343\254\311\326Y\362\340B\024\260\"f#\221HY\271!IE\0319g\200\032\310\325\312@C\225\n\262P\321)H\204\014E\004\251\r)\014@QD\305)DB\204\261\014-\n\314\224-(ju\034\223\225\344\373?B\245Os,U\004\255\010j\221\342\307\371\222p\355\034d\212\244\266[\361\271d\324\035\311 \213B\032H\354\364~R\307\246\377#\030\315|\321\304\237&\241\303\253QA\037:I\032\002f\013P \000\244\301\320\263R\"\232Qrv\007O\000\2767f\314\225\n00c\2717-\242<G\222u\264\317`H\033\315\336\254\"\233<0u(\236,a\247\274^\td\3031\267\230\"\305\264\371]ek|m\206\342 \206j\372\375>\004\233\335\303LP\373\261\354'R\304J\023\266\301eL$\221a\246\024K\224Q\002\347a[\265\007q\003n\004\212\334\350\361e\323\303;\030\36046e9\267\303\275;L\241\224(='\306X\257e5\201\353_\001\267\306D\261b\222\246i\206\267Cx\333\354%w\323u0?c\363\345\275HP\024\021\021Rr\365!\016\357\242\367\237O\246C\271\246J\245\356\341\214\222[,\2637\357\r\221\366\235N\236\216\0304T\355b\236{\241\213T\350b\0301\014""\302\250\032}\250\332K\r\005@\330\252\211F\250khO0\032\251r>b\376\301(\303m\201\3349\033\3742=\031\267\177\032\305\237b\r\2629\262kG\331r\007\270q\0045\241\346 \373\027J\355\224\251\020\222I?\306\004a\373\327\272\206\324i\022\220\007\026\251$\203\273x\017\200\273wc\260<\231o\311\013\376\004\351\325\366\254\030\341\213d\251\010\225\026F\211\006\013\013U\242\330J\321\336\302BI\317\300\300\316\246\343\007H\017@\3630\207\202\3036\303V\003i\203c\206\203\205\032c\016\207k\225t\343\2073\3137\243\023\236\247=\322\273K\316\016g\027/$\322\274\027\215\255\310\306\236\206\020\323\346d\220\226;\356\267\210\030\336\242!\362\256\233AWOx\337\210\203H87\243#Z\3544\356#\205\247\236Z`\330\354\267\274ls\236\004\271 \270\255T\3110>\220t\223r\327\262N\202\204\210\206\313\220\242\na25\261\004'(\355\353\327\221\261Iq\220{K\220\345\275\255`\340\354/\317X\341\024\240b\033B\033\367|\023\313i(\026H\321\254*\256\362\205\311\2530\263\350)\214\253\304\222\370:\240\303\n%\226\347\304h\243\264\203\236`\271u\232X\243n\006\270\317l\221\033\356\335H\347\314\033\300\rP\224\r\266\334,\363\007\226,90[!=\3056\003W b.f\346\204\306\326o]\0000\333\267\223\305N\340iC\003^Z=z9^c\"\032\336\\\233;\026<\206\345M\250\3075\333\324\023\336\250\362\026\3420\313Q\t\024.\365\004\234]V\274i\035\211o\333\335\257\006yK\216\273\362\245\032\251\253\250\251\027[X\305\372\030\205\3072\373R\241a\320\212Vr\233FF71\346J\354\037\033\036\014\367X\r0\243u\341\026\340\230Wu\371\356bO*\341\207\213\035\255\274\340\231\nqP[\030\272\253W]\312\360\030\216\204\0132\245D9\357\340\236\212\251\354\370\351\271\3342\335\207b\027\001\331\316W-\315`\316\306\356\002\020\306$\233\021\324\210\350;\334\003=\257hg\026[k\277\004(\"\033\236.B\007\231\014W\226\312\2526\211c\357\306s\315=\252\023i\265m`\3463D\357P_Y\2331d\301!,\332\033\032\032cd\350\225\315\325\351t\265\320r\235\352(\254>\273X\026p\014\221!\305[\214\310NPR\236c\260\370G\022\263\303#%\262\304\263n\034h\303\022\304b\244\024L\020f6!\346z\034S\2739\251\313\313\260b7\254C\332\313L\272\273""\250R\316\t\301\316W\023\265\221\236Pu\020\343\270j\023\005\303\t\034\215\215\216\207\310j\030C\tnN\007*\035\270\357r\024)\256\260\361\026(\203\2471\336\262\244KU\276\372\271\032\354I\235\034\314.]\376N\013X\202\367,\235\362c\3037\2065 ]\246\320\347\331,\024e\274\270c\004\223\207\ns\216uRI M\362\226\241\263\251\332\35205\034\234\002s1\205\020\371\303\3012\221\300\314\357]\0148\374%\313\234\211r\n\310\234\350\225(\211U W\274/Jl\344\374\004B\231\227+\227;\373\372ZX\255@?\330&\357C\271\003T\271\020D\303\370\332= \217\365\"\265\356\336\323\336ol\0304\n\007\003M\037o\352\302\222\3204\265%\222\r\252W\217\177\204\323\243\224\3479y\00741\344C\326-\367\301\223\313_\204C\336\372$\233=\313\344-\233\270_\022\021\320\224\360\351\331\035\345\316\230\345\370{\262\263\241\007\321\221y\260\3049\251\027\353\216\232\022\362\301b]1\264\304D\"\255b8\265,X\2335\370\\\303\216}\335\250\365\020\326\207\304u\235I|\024 )\000\3561\265\204\362\320\366\366\366v|:\270\360\261|\t9Qh6lX\353\335\201l\2524abZ=\r\214\333\266'SL=\014\310]\312\037\246\277\347\024\264$*!P\244\014\201\244l\2633*M\321\356y\363\177\n29\005Zt\366f\241\3332\240-\325\350\032\335M\204\215\365\336jK\235\206,\002\335\356\024L\000\371ZU\373Xh\027\372\010\252t\203\324A\010\020R\004\346<\376\244x\362\363\005&\336_\217\232\3228LmX\312\202\362\3010\252\016Y\214\251!C\256\"\341j\300\322N\034\004Z\3444\314*\2503fj\264K\224\267\203{SP\251i\224&4T\227\265\213I\210\354\036\356\336\357*\213\362n5('\266\317\2210\006n\t\301\034Q\302\347\316\216h\357\006\377\316\217\235\033t\233\247\364\020\366\360\365z\232\t\362_\033\337G+Z\336\372\253\207twLbS\215\035o\214Z\014n.\n%\222\240\375\2371\017V>\374\017W\324\305:\240\031\2616g\\7\311\0263\214_\201\007\235\030\226`K\324\200b,\016\021\207*>X\245\035=8\272\360\302\363\2770\325\200r\211\301+\033q=\3747\230\341\3170\325m\232\360\352\027\3516\032\314\3632;\375a\210]\220\224\203TY\023\024\353(\3031\313\202Pf\342\241\311\344`\216\350!=\341\200\026\267~\360\230\003U;\003\"\014}\017Q\3146\333\004|\327^OU""\244\023\204g\327\303\277\353!\001\212\201\340\025\363\202\017'_\244\245\270\256\361aMH'\205\352^\357\375)i\3056\3079$\222H\t\202m\266\375\270\200\200\320\336\214\336\336-\020(\343\272!\306@\346lbOsFzt\234\311\375\212}\200\304\325\031\247Ij\016\237I\250\271\355\025\010~\000\24132\275Y\0326\360Z\022\020\210t\003\004.\020\036'U\233\001\232Bi\211JQ\220\210Iv\270\005\304$6!!!UUU\250\020\377\267\001\351\010\326\006\340\251\016\277\316\013\251\250\307oL\007'\306\020\211\"E$\027\031\207Q\342\354\023\337(Z\264\307\177])\314hT$$$\"\224e\372\201a,\\\342\361n%\255\211\306\356\217\233!m9\216~\343\307\223}\023=h'd$ \304\002\020\035F\237U\225\260\314\204\313\266\305\300\332G\002\311\312\260l%\311\300V\316\253\352@\031\021|\240\201\002\004v\010\320\310@;\345\207\230\260\tB\273\323\343/\371\223\272R\231}\037Ma/\204KI\024\300\007\330\240y\3766\3458\232\201\266$e\252\"\034\202\312\316\257q\027\301\013^\326vcw/\024\226p&\333\004\334\201 \340\024PO\256\036p=\t\272\001\363\213kp\360\260\034o{,.1\240\314f_O\227>\"4y/\031\272\321\022\020\273(L#&\017\221w\341\212\362&\307\231v\206\310\360-\034\351\331\230{\200>\221?,N\005\363\312L\241m0*\252\251\241\020\220\001\r\r\203`\t\005\"\270\025\275`\335\354\336\366.J\305}\325\250\214\025 \232\315\362\271t\276\024P\236\337\213Ck\232\2346\255\252\306=Oz\210\307!\243\237\271(Yj\313#M\246(\2004\2616\3156z\200\215\022X{\357\341\275\\12\203D\0309I\266\316\342\267\0209\321\205\232#\n\350\301\204X\270\206\312e\324\027n]e\3338\\,-\033\\\2258\234I\010Vi\264\332mn\325\245kfX6V6US}$J\336\021l\250P\3451\263.\333=\326k\210\361^/\230\031RnV\202\257\001\002.\324Z\022n\355HV\360\230\030\3378*s2\343%\260M\255\260\304/\231(\204\322\211\314[\010Hz\301;\025\221F\021\001\"WlSt\207\020\322@\032\020\353$\302B\225\"hJR\232\022\205\311\310\310L\225\210R\251)\241)\342\302\213\264\362D8\352\201\306\201\336\004N)\304D7p4\002\327\"}\376\202F\020\031\024\220>\341\203\222\352\021.\205\215\004\337\031\023\2455?\365c\233\317\002\241\010\257\336\027t4\004\354\200q\373\342!e\314\373""\306 \317\367r, z\344\200\247'\2172m\027\274L\274\263\231\205JGqH\017\332\242\352bF\002_\3079\002\031B\216\332W\352\025\t\005\007\225\320,u\370\216\317\342GLS\237\260G\366l\363C\200j8\322nF\353\272\006\361\330\354\016\210\267=\235\3733\177\333\007\333\215\360\215\337\231\343\002\366GQ\263\234,\004\020\200Na2{\216\203\200\036\237V\026\300\247\002G\004iR\327,\301x\251a\327\022\366\371o\200^\t;5(e\226l\351CaK\351A\270]@\212\3574\316Y\307X\317C\300t\313\305\\\246\271\31400\327\306\234%\255@B94tD\240\377\221S0/\200\240\230\342\205\221\260\322\207td\220{\"\355\220\362$d\002Bv*\004I\016\357]\321\252nI\030\305`P\0040\013\213#\000\247m\222I\253\022lc\356\352\022\026\261\220\020\274K\244\013\225\003z\3707V\326\323\2772\344&T\322\201\336\023E7\303x\356G45\337\270\243.\303wb\3734\252\375\320l\017\252\311\244\023(\231\374\264\035]\345#\204@\267\247\235\332\003\300\035\302\247\024cB\302\301z\"BB\310@D\241\022\232B(\344o\004\351n\033M\342@pbX$\222q,\211P\206\002\215\214.\000\312\021QH\333<\036)v\330S\274~\234F4 \235o\304\t\273\240r2\3476\320I9\363i!'\202\274X\344\316&\343\203p\002\200w@\342\024\272s\364}\025\250\275\254\303\267<\336\322\234&\333;l\226r5G\004\034\242g\344\034\303O;\270p\241q\357\235:=\255\024\264+\271\341+\246\363\003\024y\232\311\263\2508\246!\322A\310\320M\n4\022\206\321h\271p>@\307P\027a\263\310\030/zu-g6\234)\361Ey\271Y\265\200\274#\312h\341\350[p_V\241\241\266\225\326\243\003H\313P\320\367\316\002\313#A\2625a\3549DV\360\211\342j\245^\262X\265\222\214H\352\312\224\350\302\025)\"\003&ur\241*\244\221\014\340|\366\320K\032:4\206@c\202\314&\224@\354\t\260Vd\245%4\273\300\004\272\216\366*\033\210\272Y\017\320*f\312\243\240\212\211i\006\371.Y:\316v\346\020\345X\226;\206\003t\261Ja\224/\302\256\355b\215&\026\003V%\350\321)`\305\243=\363e\222D\227\031\210h\363\376`:\037_\324s\341\020b9g\322e\255\334;C\241\320\255\306`;5;\354#a\235\346\010\032\230\220d$\016IF\356\2759\310D\3161\036}jr\r\331\245`U\034\331l\261\274\325\220l4t9\0015\"r\310\241\250\203\271M\200\343g\316""\027P\364\002 B\026\014X\257#4I7M\300lS\221:\254Q\221|\032\240\266-\031\024T(\223\207p\005\202\372S\200\235\260\243(\232\370i\"_\004\270\205\224\344s}E\"W\325\343C\013n\336,\304p\013\3240U\264@\210\301\347\325\317\2641\0145O\327\004b\220\036^/\177\245.a'm9\342\241\353\261\024\221I\005~ooX\247\350\220\003\313\004\247ut\363\341\361/\274\216\320|!%\207HJ4\016\024Y}%\205\304\314&&\010D1\200\010\000r\252\252\252\252\274\\\330\257C\204\022\221O0\331\3412\274|\256<Aw!\261\274T\356#\020\001\256\325\255\030$\t\031\0043S\305^~\272C\005\343mc\206E\2434\324\352s\"Q\312p\2772\216\020z\200\333\316\300\240\231i\"RF\250Y\211\002\031\204\226\004\2255\300!\365\301A\314NY\231a\231\224\260\201\t\001\201\261\035\350\355\360\373\202\351\254>o\177\326\366\353=G\310oG\205\372\021\301\221F\001\352Z\001\366\304\311/H\260\364bhz\026\340w\214y\265\276\333U\240o\325\261\r.\371\260\236\302v>\001\352\330(~C\034\017\023\233\001\200r \206(@,\201Q\035\314\262x\315\350\352$1\342[L\337-\272\035\230\\\337\225\213q\214\304\252\013\360S\240\020\034R\265\257F\326\243\2662\036\210\241\277Lb\200\036\301&^\223U\007,\3205@\317l\037\207.x\r\020\300O\t\005\305\346\002c\215\353\222e$\r \030X:\337{\227\365\236\275\030\305]\205\350;\375\262!y\341\346\2218\014xP\221\206\272\003\226\\\307\210\263\216\323\037oh\243\364i\343\376\231G\210\331HH\204\212\234S\243\227\014\014-\200\3710\307\032\201\216\016\332-\350\205(t\220-\327F(\035U\300L\347\016\320v\366\372\n\240\214R@$\204\002\324S\013\rR1\0013\034\336\020\364K\365\217\264\2729\370\2039Oe\230\010\220\t\022\002\227\200T\021\305\311\005%1\312\342S\240\276\307\244\215\351m\336\205\201\355\243\303C\347\234\243\303-X\013L\213\004B\010\244%\024\220\210\035[\316\254\360\210`\363\203\r\350\205\324K\022\213 &|\350\036^\360s\223\252\034J\301\305@\260|T\"`\304\244\210j/\246\243\t\333\203\20610\202\010lAb\231\221\000DGe\216\362\366\303J&\373u[\203\024\002\333pm\274e\353\324\354\023gi\274\307\230+\014\305\27269\021\244i\033\304\321\350\270\353\220\224\025\252\005\010\034\246K""\003\th\265T0\302\3316\205\333\203!\025J\203\312\221Xv H\245\003tD\315\254Z\022&Gi\231p\025iy\021\253\010\\\013\220R\244,D\250\262\204\261Af+\330q\353\326\350a\221\246\364\263\024\014\320t\204\344\275\0103\316/\230X\214F!\010\223\257F\235\t\221\212\2306\272+\246\243;\252\213\220\004\034\340\026G\nxtfq\0364p \006\212\031[0D\321e\222\221\211\261\024\202\331h\243y)a.\364\003\240\003\244\003dG\017Q\201dj\005E(\265\304\372\203\3176fm\201\240\211\311\202\374@\273\337\020\264\001\202\003\354\340\006!\347D\036\372\262\201\232)q\333\334\016d))\200n\371IE\320 \257\230.8\017qEe\021\301\021)x\201\311@\277\361\361\350}S#Y\344\021\224\233\\\317\255\306\202\242T\201\254nHv\\\352N'\251\033=\330f.\241\326j\0219\000Pku\206\031\353\000\311\307\207\376+\211\351\211\344\365\032\275\255\215\207\244\352\001\362D\200\340\201\270H!\207X\276\303\036\300\342\342\207\213n\2604\206\000\200\3124.\033\360s\027x\222\200\r\002q\312\211\353\216\212\200\373\010\214V&\274\313\371d}\216\376\245K\207\003v\250\326h\303\343\224\216L\354\032\306\311H\035H\367Q\017\tS5>\n|\007\340\375\262\212\227\r\026\003\010\315R\244\35212\254\2034%\336\320k\001\242\206$\356\364\341\272\305\337\341\352\023\006/z9)W\240(\344\201\246p%\352\244f\003\367\000\357U\3616\014^|n+\207\016\202L\227!|\305vC<\352\341\020O\2049\001\211\211\036\346H\356E\340 k\003\210]\200\336\252\251X\234QHEM_\002)\262\356q0 |\325\311\037#B4\31074G\225[\026\007\005\010+]\331\340R(oS\262\202\326 \263\036l1\236u\315\203\r\254\036Yhm5\262.9\260]\0174\026f`\227\000\351\204\235FB~\250QP\222\336K;8\211+dX\230\356M$\253R\214R\304 \232D\r\313\250\323\034U\0027)\301#\213\225\234\304\373\311\010\275\244q\354P\271\034Z\325\021\250\203\021\026PNDmr:#F\031\243&\2743\311\014X\220\222I|\327\2261\014\355\2176\343\212\273\350]\343{jj\316\245\276\240\361c\3326u\247\026\335Z\353\311v\013\2414\032(\360\340\222Q\236A9\021\322\3471,P\013\014\314\367\352\022\345\340\3345\033BJ\210`k\252\222H\310\314P\2651T\216\2531\334\r4\341[A\024;\246\371\262)\270\205\363\362g*\237\222""\221\326b\246\006&\376\243p\234a\302\373\317\004\272\007\010\213\247#H\334J\335\222\2266\252\337e4.-7L0\254\232\260\314\334\31234\212\003\273$d\025\261h\210p2\031\000\321s}\215\370\357\306\371\243\220\245\213I\022\030IU\035\001\022\352f\274<\0339\031\027\310\262l&\354(B\240\003f20\"\016t\215\013\254C\340D\000\322d\257q\236%\206\354@\305\"s\020\301\033\326\n\351}\003\242\3462\013\"\300&\221\246)\030\302:\252t\301\006D\035\220\013=j\264S\314c\rem\232\341\t\004\334b\021ZB\320\0216R\033\007\n3\360G\216\260KI$\201\024\003\253\243g]\251X\256k\314\"c\3539\360Gi\246\010\025\r\201@\3751\034\307X@\346\2526\336\366.@1\010\201\265\037\260\036\200\324@\301\020)\330ph\341\322\257\230\377\350\206\316tx\250\032I\220\223\020L\024\332\224\200zcoX\274P\340%\014\020\363\222J<\343\275\003\270\004\330s\223\311\344\354\207\354]\344\362\302\323\306.\337\214\324\246\361\270 v\031\t\274\201\010`p\010\037l\021(\312\307\343\237F&\377\243g\002\366\336=\335FX\345\003,_\035Y\200\310\017\231 \267X\001\357 t\355\201\264\355\343A\347.B\026%\rk\237\035\325\037\016\272\313R,\332\024#\266\r\014\250\340\236\232\367\221\313\3224\321y\025\017p\225\n\244<\017K\264\033P\360 \274\030\272\373\320\260\270\r\3306]\303%\240`\237\204\210\300\313`\202\002\321Q\r\234%\204hi\034\014\0034G |\314eSP\005i\241--R\0136\034\035\013\243\334\336x\213*9\213\232=\320KZ\300&\363E\003\257_\030{\251\214d)(\242O\216{\255.\310\313Zer\207\016R4I\245\323\342\366<\023\336\273\255\327}V\350\253iR\312Q\366\356\251m\256\\\273\327P\273q\231\251V\303\303\253\273t<~5\374\006\251\302\370m\264\r\245\372\217K\321\201\031\213\341\220u\347\336w\353!\034h\316\237M\342d\3148\351\314\223\362?L\325\\\010\252\361\202i\372E\372\325,\226\347\350\200\327\021\375a\320\326\350\351\370\027\230w\3368\026\036& \343l\360\230\264\215#A\303\211\030\2462\310*#(\264g\221\322\315\250erQ\216\212UV\341\312\366\"\332\220n\343U\306\021O\010\304\3260Oy\370Ff\021=\0275\307\333\373kO,W/rJt\267\250P\255\272Q\222m\230E\231\306\371\305g\237:]i\224\037\313\222\345&(\256""\301\371\225\231\2577W\231 \350|d\324\204\274\255LLR\362x\345\211\211<\374\215\334&'\022\346\026\242\262lR\271\t\313\035#\n\366\013\371wYf2\377\007\377\027rE8P\220\n~\346\227";
11216
+ PyObject *data = __Pyx_DecompressString(cstring, 5737, 2);
11217
11217
  if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
11218
11218
  const char* const bytes = __Pyx_PyBytes_AsString(data);
11219
11219
  #if !CYTHON_ASSUME_SAFE_MACROS
11220
11220
  if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
11221
11221
  #endif
11222
- #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (5698 bytes) */
11223
- const char* const cstring = "x\332\355\\Os\033\307\261\007)\3312\340T\275R\305\257R\225\323\310\216\013\204\014A\004%\3322\023\351\025#\313y\262\034\333\262h\312)>\325b\261; \327\002v\241\335\005IXOU<\342\210#\217:\346\230c\216>\276#\217<\352#\350#\274\356\236\177\273\213\005\010\220\224\310\270\342J(`1\323\323\323\323\335\277\356\231\236}\276\370b\241\3026\203\230\331>\353\371|\267\313\235\230\273\354)\357\357\004\241\313\354p\263\327\341~\314\312\317\353/\312\265\377\262\243(p\026\334\025\346\004\35564\365\002?\252\331M\247\366W\273\333\365\374\315\215\007U\266\376\244\212\375W\030|\336\266\333=\276\302\326\253\254e;q\020\366G{\336\265\333m\273\331\346\033\033\320o\204l/\306\337R\324\237\260\333\314\365\234\270\302\256\335\231\252C\251T\274\033r;\346\314f>\337a\r\371kc\243\376\204\355x\361\026k\000\277\rF\223\363l\234\277xJ\3347j\320\377oA\2179(\242\210\263\006\265k\260\205\253W\257\322G\370\027{UX\034\000?\335>k\270\342W\027\177!\346\354\260O?g\030`\016\361\345\262f\277TlH\021\001#\276\213\314x\233\276\342\001\373\022\2235=\274\033\360\210\371\260r\316\226\355or\034\0249\375\316\016\355\016\217y\030\225\212\327\364\177\245\242\313VXZ*\305\342\243\240\027:\334\260S+\025a\014h\370\000~\0242\211\267\354X\017\351\371\021\017\343\210\005!\013y\267m;<\202.\304!tZ\307N\212\335d71\225\310\314\241T\224S\205^\251\345\237\264\334H]5\226\003\010\351\001\341-\234D\252/\255-\016\030\362\270\027\372$\232\357\351\243\221K\251\330\021\215\177\350\272\264\n+\271\014\300\300\337\244\026-_ep0\2430\367v\355N\267\315\023\213P*\336\271sGtXx\376\242\312\312v\271\312\352\225R\3619|Za\365\027\251\006\362\231lvC7\2731\256Y3\325\254NO\2509\316\273\305C\356;<\243\022(\242\357\372\361V\000j\226\261\243\006\353\004n\257\315a\356[q\334\215V\256_w\003'\252u\251y-\0107\257\337\270\336\366\232!(\366\365\254\rn\305\235v\251H\034Z\236?\235\267\210F\033=\342\317z\310\365\306\203'\347\326\221\244u\216\265\302\240C\326\237\364\037\0144\0255\264k\303\263\010\034\254\327\362\310\344I\207\"R\227\205\325\373l\223\373<$UBQ\307!P\254""\344\272\036\020*9\204n\010k\344 3\344u\202\326\350\320d\244\256\342\300\347\021\220/\025\333\201c\343L\331\246\267\315\375\004'\311\001\224qy>8\223\016wQ\313Gg\014.!\266\205j\331\340\2168w\321{n\001U\033\227\025~\227\264\231\0271\273\031!\226()\245\206\323\356\254\003#\304\344\316\300\317\000U\277/\371\316X R>-\227\027A\313\373@\200\324\347\001Y|\340_\343\235n\334g\221TC\224/5\025K\330\207\336\t\241\212\325\205E\301G1\300&\217\231\026\263b5\345*\327\240\241\370\216K\211\353\244\226I\367\313U\226S\366\235\334v\266r\225\031\275\0030\216\014\205<\352\265\343\323p\241\031\355i\332\021\364\t\374c\331\314#\316\331j;\n\222.\266Gl\200B\001#\253\335n\273\017j\230\2349\"\260\020:\014`\247\326\316C\225M\352\005,\241 \004\223\016=\276\315g\350Kz\215+\224\033wd\374D\340s\262\2254\230\310\301\216\004\023t\261\006\0076\340\023(\303\222F\202\245\027\271m\237\023<\324_\310.\004\027\251~\242\301\322\213\221\356\231\036\365L\017 y\346\220\303\026\332\036\310\364\323\345\345\212X\010\371}\361V\305\365\"T\005\370g\272@\366\252\300\246\007\347\032wP\252i\225B\3331f#=p\310;\3016wg\301\033!'\031\315z\307\014v\323\314\226\212&\350e:\346\255\"\313\276dQ8\2454|\320\374\022\316\310\360\226\t\204!\220Fhy\200\256\332t'\237g\207<\213A\364,\362\332\360\014\234\005\204\251A($tBP\271*Q\005#ib\005\344!'\247\207\326\336\025}*\341[ZR\347.N\376\236c\2741\253\223w\002?\266=\037\361\022\330b^\314;\221\021\002\337ux\027\235}\000\372\266C\177It\270.z\371\220\253\325\366f\020\202nw\330\027\034\350\265S\353\2429\325Z\021q4\253\2105y\274\303A\263\342\235\200\201\222\203\0346=\020\205F\036Z\001\204[\304wi!\202\003\004\363 \266\333\364\r9x\214\032\332\342;<D\261\372\340O>\326A\001\262+{W\215j\202\201\340`9\323\306\024\0175\036\024\n\030U\213cL\226\210\"0\200\221\300?zx\0323\004W\031\362#\307\356t{\2320\204#b~r%DG\037\202A\311c\340\203\376\213U\020\254\312XF\230[\225\331\333\201\347b\317\236\357s\360\353\021X99\200k@\345\232\230\004\013\272\234d\351G\343\000z\0140N\214\243\217\215\217\322\313?/\357\312\224\250O""\220F\037\010\266v\023\211\327\244\306\360g\227z\344\266\225\004\331G\354>\371\217\210u\340w%\345\3048g\205\213\202]\211\202\237\335\374\254\302}\024\367\246#B\234\205)\362/\374q\205m\365:\335\276\025\007A\373\347\032\372\032\361\351Q\257\333\r`_\340/<\206 \272\243\240\323\345-\033Tg\205}\333%Tho\254\243\217\202\310\232W\301_[\372\367&P\201\037\276\264\333\021'LLt\020\356(\035~\221v\330\254\033\304\340\265=0.\223! \233\002\216\360\023\374#&T\0014#\377\303\032jV\r\312\227fN\300\204\304(\222\364\355mo\023\225\0302\244\300\004\204\343y\000Sn\301\223`\207X)\025\223\231\205N\300\324\000`\nmO\305\347i(\024\375\344\314ib\340\367\204\351\005a\r\010\240\001\243c\257\261\373-\023Fk\234\344\273^\004\026\255\207\022\256?\002\203\023+\322\300~@\322\254\021eo\215\265\020\"\363T\277k\241\355E\322\305\200s\336\364`\321\244G\027y\017H\304v\205\347\3011\004\253z\230\t0+\3413\241\203\210\263\331T\214\320\315\345\221\023zM\311\206\316\303B{\033\250\n\020\241%\251\241\257\003O\014T\363\024\026\350\337\325\026\220\2440\335\242Hw\351\364\302\020\343\0131$\320\024\212\227\273<U\026\005J]P\301\232\240\342&\333\005\005\3549 4p\336=\030\r\262k\033\235\273\023#U\200\200F\033V\021'%\305\211i%\373_2/ie\320n]%\230B\376\"3\327b2\334\247u#%3\243\005,m\252@\236 I\351\205R\207\26464 \372\271\027\206A\210\232s\337w\371\256\372\206sX\353w\271\370\016\324\362\324\205\245\264e42\321\031\265\234z*\261Nm{\230)\323\314\304\370F\277\307\032\n\215Kj\256\206-\025\325\234\264\010rME\354\343\n=1\230 \275\227\014\251@\300F(\323\220C\253\202\366\3708\350\tP\307\250\027\350hYN\315U\014=\360\007\317\307`\001\200\033@A\246\341r\365\363A\034\0248\024\256\037\2679r\022d\020-}\210\324l\r\266\000\243Y[\020\024P=\343\344\322\331r{J\332Y\206\210\316\365\246L\262\307\345\356\265S\3354\030\037\213\2007\361#[8\227\333\220+\373\340\366 *(\257\266=\207\227\253\245b\255Vc\231\377\312]\310+\266 R\245\354\232\3022\370\264QF&9\006%\337\322\332C\032\236\333=M\313\t\242\230\272/\326\226\027!o\257--?y1f\\H\030\\\017\362\006;t\221\307e""\370\357Z}\351\306M\363\247,#!\031Al\030V\201-\301i\225-\202\213K\314\033\002(\311z\246/\311\"\247-\211f\3028\024\236\217v<\222\257\262M\\\314\336\261\2768}\237<\346@$\320e1\323\253\217\255p_\305\330\353m4Uh\272\026\302\276`\323v\236\262\205\016\254\037\370E\007\321\305\301\214\242mGqe\005\214\035V\320\270\244\025\214E\247\2144\225!\316\024bj\353\305\330\362\243\254-\353m3\021l\336\372\374FE\004\215N\237<\306u\0236v\373\340^E$\352b\327\226\327\006\277\";.\337\254W\314\303\205.*$\354\212\362I\333/q\257\213\333\267\224\014W\t\2520\n=r\213\347l7v\276\307d\326\027\351W&G\324\331\3605\341}\272\266\027\302\3663\370\351\250\005['Z&\302\245K\204\317x\301Yb[#orz\"\203\3162\225\263\325\003qm3\210E@\204\234\020\267\020\336z\035\320d\333\347A/j\367ki\372\250\301Qj\016\344\245)\260\"L\350{\274\355\312M\"\267FL,T 2\275\007-\010\201:\210\\]\200\001y\366\226\024\007\305J\tuhdFW\007\231f\270\026@\326\316\226\207\264\223\224th,\240SG\372\371{py\033[\351\221!Z\233\355\330V\363\222\332\002\312\321\364\364\266\217\010TI0f\216\342\200H\210\220\035-A\244\230\224a\225\0267\331\252\323#\227Dz'%\204rD\024'\362@\264I\373[\240\341\270\2536\325\346\031\345-\251\325\002\251\272c7Qr\345y\316\366\315\276\244\211\314\276q\226\243N\311\335\264<\237\221\320\343\t\212<.\260\003\013\226^\230B\262#\035\323\354\336\010\003\366\351\207\220A\344\314\203 1\220\375\370xN\353\022\330D\"\200;\302\221\322\326\017o\201\331\000c\236\273\200$\020\201U\010\365\024\316\251A\233\004\016\252\207\222\334S\3661[b\267o\263E\341#\331\237\330ME\022\003\302:l6\301\371\013\034\331\3039\376\n\273Ye7W\330\262\214\262\022H(\307\006`\303\375\250\2453=\342\227b^h\365|gz`\026\337\276\256\262\307O\336\036>\213\341f\300g\352\200\333\316\244@\r\234\342\250\352('\224\2572\346(\206B@0M8F\027\235g\205e\220rC\356I\010B\304\207\332\304Uv\"\316\231Y\032x\211\013H\025a\367\003=\244\310\251\025,\021]\265\253a&9\035\014KEO\203\210\2401\212\300\022=\304\317I\340\320\355H\342I\306J\305\024N\233s\022j/\007A\211\247C$\225\224\215\305\347R1\005""\320\023\320\027\271\235\000\274IM>\026\376J\025\032'\3011\010|\244\014\223 !6@v\322\301\331\314PLz\362\306p8e\234o\020\207\327\022f\270\222\313\304LP\334\r\272\275\266)\027\244\205N\257\203RY \333TNd\002\366\036\005Y\342Phz\304B\260=\212\246t\0353\341\340\330z\004\307\tz\2601\rZ\202[\034\"\177\207\223\017\330n(\3779\240z\202\305\004\242!t\204\234\366X\001\317L\347\n\203\243\024\360\207\260\344p:\360\311\243\007\367\277\003\250\253/\232\335\022\240\263\"H\2369\370\311|\365\306\362g\025\023=\211g7o-\232g\323\245\260\017~]\211\353\233\314V\265dgNV\301\215\000J\320\251n\222\014\000\344\204\244\024\375g\032\014\221\000aa\222\225\321\314\222\204!\nk\035\273\207\247%\311\001\314\326\374\tR\314R1\311\302\251d\230\017\246\313+qV\n\326\222<<\345\274\233\233^''\017\244\263i\311\014\260\224\030\355\337\t\342\364\t\242\261M\240J\n9Q\037\307\241\325[K\343f\312GO\264Q\366&\020X\202]\304\361 \3436l\331v\232\256\315vW\330\256N\007\247\315\001\r\222\010r\211\014P\265;+(\024\202;2\rD\237\362\365[M\371\326gM\371\326\307\245|j\341\217\223\361\251\372\241\031\220mB\276\347\231jY<\000\314$u\252\257\314\351\360VI*\251\033\013c4\253f\317k\273\321T\360\223\270\257R\325\2259\310\007\r\223\231\276\221\213\023\300\371x\324\r|\252%\322\247\304\362\330\260u\024X\215$dB\247\246\007\251{\351\007y\251\027\235D\273\336\266\347\366\260\302\"\225t)\274\032\235Jf\306\263BY&\301\242\225>\315\374j\375<\344W3\"\231\347\313\230A\257\242)\235\214\324\r$\241\213ES\252F\356\031-\230\214Bk?M\024hTG\256y\245\312\025\262\2128\006\373N?\253zS{\226\343r\265\246\207\261n2M\333X\302c\341e\200\036<\345\224\t\333\006&o7\340\244X\203\020zzp\\5\250c\342aU\320\311\317\330\312v>\345f\206\362\331\302\226L\326\226>\277U\351p\270\267\261p\025\255$:\337\331\327_\221\323TI\004j\205\253\362\034*:\235\244\026\343\241(\205D$\220\206(\365\3564QLXF\253\352OS\367(\203\346OTo+\363\027,ui\363\354\270\212\240L\264\264\245\343\000\242\210#YrJ\025\341\2428\003\350RU\022\334I\205`0\261\335\222\270\210T\242\352(,\242{\254\252\234\"\000""\021\261\363\325\355r;$\360$\326\251~\027+\245 m\304\373\255\325D\351\211\2564\307\275\235P\265(\305\366S`\243\213'\360.\252j\215)QA1T@(b\346\335\320\267\211\322+M\373z\304Y\000\255\272A\344\211J\307\222\276h\233(\202\302]\\\257\333\346I[\227\3150\236H`d\302f\204\366\216B\217\241\241V\n\204N\313Q\003\007\007T|\200\357m\216x7\333T\340\2407=\027\315d\255t\254,\353d\350\244\300I\311CB\023\031\314\370\374\352X\351\225\004\352T\322!\021J*\342\227X\214\345\302\216\240H\260\021\325\307h\032\354\345&uY\221\220\022\020c\n\021P\341\026\352\"\245\356J\031K%\215TZ\025hu-2\026\2307y\214\021\017a\347b\215\264vu\260\000\3245\214h\352\010\007\302ab\336R\006c*C\t\013\346#ep\022\345\027\225\222~N9\215xZ*}MV\225bd\013\n-\023\226U\312\320^\022\331\020R\277\241\262\235\233\222\276\370M=\303\345\327H\2220\212\251p\344\2700B\214J\024Q BR?2!\302\n\316\r:I\240\253F\3772\270sl-\232\005vH\204\263a\217\200<pG\333\302L\300nZm\024j\251\331\317\213\tmYDK\021\225\211\332\262\001\242\n?\311\236M0\212\246YJ\000\013\302\211bO\202\206L\031\311\224\253\351yIy\213p?1\242>\312C\376J\222?ySH\240\037|R\200\006\233\346a\020Ef\010\202L\205\2564M\031\342\342u|A\313\\\034.\031O\224\276\350ybd+\345\240\001\263[h\370\372\020$\037\276F\022\274\244\215\224\306dy\204\014z%\217XE%3\224{\303\\J3\361\213q\337:\351s8@#\345\305\372Z\260\034\017U.y\022\207\254t\004\326H\037\217\020\240\222\217\332y\202\347\314\202\374\n\261\032\252\335\303\304eB \237\271\326\204\352\202\326\"\356%$\014f\2027Pk\231\261\275\361\010\254\3017\033\256\217\256yj\363\337D\353\023\300W\000M\324\353Ti\373\260NP\213\267\226\350\333\242\370\272(\301\262.\177\206;\301Y\n-\010^\342\021\032\324Y ,\320\310I\362\022\355U\263\263\303`\021\352\010 \256\337Z\256\370\201\272\203\304,+\244\273\213\226\305\\q!\002-\031\300g\033n\321\300\257\016Dt\261e\375I\340QD\2734wt]\370\351\274\302\342\250h`\375I\346\336T\346:\307Y\037\370\235\2704~\332\375O-\367\243\336r\021O\270\351\001~o\364\265\001\311M\243|7\240|\276\274\031\252\256\363\250\252\211$o3\276 \203\215y?""\2068\274\033\363\202\014y\177\313\203;\227!\025\200\313\313$\242au\004\241\364\205\226R\3626\r\010\226\256\262\340\374\304LRB\316\177\365\006\313{\363F\251\370&^\275\221\276\345u\242Wo\3507j\210\371\231Wo\214\004\026\3532\244\230\020S\244V?\365J\ns3yd\211\200bj\221\364jNX\255\251nq\215\224\010\351\313\\c\324\303\350\321\257\374\245!#~`\334kC\350\304y\234\007\230\\\236s\212\367\215\316\377\213E\340BX\346\264\362\023V\027?\031P\024o\375X4/\035\201^\311\327Y\215\264\247\226?\313\226\342*\314s\370>\2761F\026\020V\340E\3118\324\300x\373\303\246\035~\210\235!\370\300\020\005w\005\312\360\254\374\342\014\337=b.\221\311\233/\213K\025sH.\013\202\352\237\233g\323\025\004\255\377\212\n\202\216Y\0060}\340\240e{\314\222 \271O\221$4\271(HXm\372<U\020\021\205A\t\206\306\026\006\t\032o\2604(\301\304\251\224\006\255OW\032\224:IK\211\342-\024\007%F\373wq\320\254\305AB\203OT\036\364\026.\222\274\345\342\2407TJ{j\345A\006WR\345A\211\355\3633\203F!\272\205i\362\337\307o\025\347\036\317\212sco\204\230\245?N\201\220\336\037\237\005\351\362K\204\3227A\306\024\t\251\336\343\212\204&\302\332L\205B\351\253\026U<\344\001\030\334\326uB\272\356\"\023\246\222\230<\334\005\315\212i\246\352 \241R\263\340\324\275\354\2437S!4\373-\014\265f\006\316\222oX8%<;\373[\030\017f\276\2051\271J\310\350\024\020\325\306wD\245Pv\345\246)\nz\023\3277\376%J\202\244w\247-\350I\305@\212\346\247\313\232\322\315\345\263\006%U\374s\343\363\212\224\220e}\327\337\205\377\177\001F`}\303wc`\017zY\026\010\033\376\240:\251\255\000;\352\373\216\027\324@Y\300\311\002\235\0106\222\341(?\262\344\313\020\360+<\206\246V\254^\344\200\334$8reRK\207\010\256\327\222\242\260D:)^\334%U\035M\306\216QM-K\374\025\033\t\364o\204;w\226\225z\327\202yE\227\345E\226\346\322\213M\350$5\214\224\310\302\327\272X\322HS_jz\373\334!\001[V\366\347Hq\240\032\200\256\353\030P\230\006j\377\323\0358|\002)\341[\350\340/n\332\233\235{x@\213\n\324-|#\010\374\005\361\233wb\300u+\370\037\262\252c6\313\202\227HX\016L\000;\341g)\207g\340\230\005\r\263\363?:\t""\365\200\357\342\014\332-\232\207\034\033>\311q\023\263\263rfjY\250\350\226\\1\275\r\240\3431\241h\344B\204\307\376\256\377-\035\367\260\253\013\346c\225\215\373\014Y\037\223s{\352u-P\t\330\031r\266\252\362\005Q\362\267\240\033[$\333\372\215\224\016X\237\033%\020{GWu\007:\016\244^\225\302\3312\205\333&\347\214/\263\237sl\306N\217\031\271cx\0168Id]\347\204\033\364\342\347\200\025\223\361\236\017f\316\211X\314\026\350\371`\346Db\231y@\307\222\257\336|\233C&\316\302g\032\366\270C\215\031E<\214'\021ha\004A(\317\306\010\340j\245\200\313\237\371\325\2027\351\375\314\255l\333LGB\226\202\302\227\202v\350\005\341M\013\306\225\025\244\037)h#.\010\013*h\365-\010\335)\250\025-$\345\254\276\020e\234\022FG f\025Rb\030yP\370\343?\353\257[s\205\013\037\014\353\257\346\336\335\333\034<<\234{g\357\177\206\227\207\037\r\037\016m\374\362#>+\r\256\014\352\207s\227\366\236\r\346\006\277\035\254\016~\030^\031~\272\177y\377\312\341\374;{k\203\017\006\337\017v\207\333\373?\276|x8\177qou\357\207\301\225\303\271\367\006s\007\205?\377r\345\265{\342!\3766\260a\200g\207\027\336\331{\270\2675\330\032n\355\333r\200\273\277\324_\267O8\300\273@\323\326\377\340p\315\341\205a]\014\307\261\033\r\365\373\375+\257\033s\005hp\027\250\\\032D\303\017\207_\354_\334\377\352\245\375\262\367\367\325\277\257\375\343\362\341|i\360\361\340\331p\016\273\\\202\017\227\206\317\016\n_\376b\277\376\006:^\022\354]<\270\370\237\304\333\374\177@\213\213\303\325W \264\277\014\352\203\325\303\271\013{u\374(G\374\352\340+\353\300j\274\336\206\316\357\017\312\303\017\240\233\273\377\207}{\377\331\241\232\354$j\305\301\345W \200\307\360y\036\345\360\010\030\273 Dp\371\360\302\373\203\317\206W\016/\274{\360\356\357\206\317\366\347\016/^\006\251\225\367/\277\272X\034\374n87\274\374\n\332\356\200H\240e\375p\036\373\275\017R\231\377\r\222\003y\276\232\273\270\367\337\203\273\203g\207\363\357\r.\202H\037\3022={\245\276 \207\366\336\363\241R\205\257\376\217T\341\\N$\311\351\036\020(\r>\031><(|\374\362!\261<\355\212\377f\270:\\\337""\377\354\345\225\203\302\355\203\333?\034\374\260\376zm\2760\177A\351\326\205\322\340\017(\243\303y\230\320\341{E\234\314\303\303\013\027\351\373Aa\345\237W^7O\250\313h~k\203\313\203\205ae\377\326K\245H\247E\371\307\301\217\3035\370\272\360R\311\352\365O \237\342\340=\020\363o\207_\356\177\362\362\341\313\237\3761\367\377}\241\236\266";
11224
- PyObject *data = __Pyx_DecompressString(cstring, 5698, 1);
11222
+ #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (5756 bytes) */
11223
+ const char* const cstring = "x\332\355\\Os\033\307\261\007)\3312\340T\275R\305\257R\225\323\310\216\013\204\014A\004%\3322\023\351\025#\313y\262\034\333\262h\312)>\325b\201\035\220k\001\273\253\335\005IXOU<\342\210#\217:\346\230c\216>\276#\217<\352#\350#\274\356\236\177\273\213\005\010\220\224\310\270\342J(`1\323\323\323\323\323\277\356\236\236}\276\370b\241\3026\375\230\331\036\353y|7\340\255\230;\354)\357\357\370\241\303\354p\263\327\345^\314\312\317\353/\312\265\377\262\243\310o-8+\254\345w:\320\324\365\275\250f7[\265\277\332A\340z\233\033\017\252l\375I\025\373\2570\370\274mwz|\205\255WY\333n\305~\330\037\355y\327\356t\354f\207ol@\277\021\262\275\030\177KQ\177\302n3\307m\305\025v\355\316T\035J\245\342\335\220\3331g6\363\370\016k\310_\033\033\365'l\307\215\267X\003\370m0\232\234k\343\374\305S\342\276Q\203\376\177\363{\254\205\"\2128kP\273\006[\270z\365*}\204\177\261W\205\305>\360\023\364Y\303\021\277:\370\0131g\207}\3729\303\000k\021_\016k\366K\305\206\024\0210\3429\310\214\273\351)\036\260/1Y\323\303;>\217\230\007+\327\332\262\275M\216\203\"\247\337\331\241\335\3451\017\243R\361\232\376\257Tt\330\nKK\245X|\344\367\302\0267\354\324JE\030\003\032>\200\037\205L\342-;\326C\272^\304\3038b~\310B\036t\354\026\217\240\013q\010\235\326\261\223b7\331ML%2s(\025\345T\241Wj\371'-7RW\215\345\000Bz@x\013'\221\352Kk\213\003\206<\356\205\036\211\346{\372h\344R*vE\343\037\002\207Va%\227\001\030\370\233\324\242\345\253\014\016f\024\346\336\256\335\r:<\261\010\245\342\235;wD\207\205\347/\252\254l\227\253\254^)\025\237\303\247\025V\177\221j \237\311f7t\263\033\343\2325S\315\352\364\204\232\343\274\333<\344^\213gT\002E\364]?\336\362A\3152\373\250\301\272\276\323\353p\230\373V\034\007\321\312\365\353\216\337\212j\0015\257\371\341\346\365\033\327;n3\004\305\276\236\335\203[q\267S*\022\207\226\353Mg-\242\321F\217\370\263\036r\275\361\340\311\2715$i\235c\355\320\357\322\356O\332\017\006\232\212\032\032\330\360,\002\003\353\266]\332\362\244C\021\251\313\302\352}\266\311=\036\222*\241\250\343\020(VrM\017\010\225\014B""\020\302\032\265\220\031\262:~{th\332\244\216\342\300\343\021\220/\025;~\313\306\231\262Mw\233{\tN\222\003\250\315\345z`L\272\334A-\037\2351\230\204\330\026\252e\2039\342\334A\353\271\005Tm\\V\370]\322fn\304\354f\204X\242\244\224\032N\233\263.\214\020\2239\003;\003T\275\276\344;\263\003\221\362i\231\274\010Z\336\007\002\244>\017h\307\373\3365\336\r\342>\213\244\032\242|\251\251X\302>\364N\010U\254.,\n>\212\0016y\314\264\230\025\253)S\271\006\r\305w\\J\\'\265L\272_\256\262\234\262\355\344vk+W\231\321:\000\343\310P\310\243^'>\r\023\232\321\236\246\035A\037\337;\326\236y\3049[\355D~\322\304\366\210\rP(`d5\010:}P\303\344\314\021\201\205\320a\000;\265v.\252lR/`\t\005!\230t\350\362m>C_\322k\\\241\\\277#c'|\217\323^I\203\211\034\354H0A\023kp`\003>\2012,i$Xz\221\333\3669\301C\375\205\354Bp\221\352'\032,\275\030\351\236\351Q\317\364\000\222g\0169l\241\343\202L?]^\256\210\205\220\337\027oU\0347BU\200\177\246sd\257\nlzp\256q\007\245\232V)\334;f\333H\013\034\362\256\277\315\235Y\360F\310Iz\263\3561\235\3354\263\245\242qz\231\366y\253\310\262'Y\024F)\r\0374\277\20412\274e\034ap\244\021Z\036\240\2516\335\311\346\331!\317b\020=\213\334\016<\003c\001n\252\037\n\t\235\020T\256JTAO\232X\001y\310\311\351\241\265uE\233J\370\226\226\324\271\363\223\277\347\350o\314j\344[\276\027\333\256\207x\tl17\346\335\310\010\201\357\266x\200\306\336\007}\333\241\277$:\\\027\275|\310\325jg\323\017A\267\273\354\013\016\364:\251u\321\234j\255\2108n\253\2105y\274\303A\263\342\035\237\201\222\203\0346]\020\205F\036Z\001\204[\304w\271C\004\007\010\346~lw\350\033r\360\0305\264\315wx\210b\365\300\236|\254\235\002dW\366\256\032\325\204\r\202\203\345L\033C<\324xP(`T-\216\331\262D\024\201\0016\t\374\243\207\2471C0\225!?r\354n\320\323\204\301\035\021\363\223+!:z\340\014J\036}\017\364_\254\202`U\3722b\273U\231\275\355\273\016\366\354y\036\007\273\036\301.'\003p\r\250\\\023\223`~\300I\226^4\016\240\307\000\343D?\372\330\370(\255\374\363\362\256\014\211\372\004i\364\201`k7\021xMj\014\177v\251Gn[I\220}\304\356\223""\375\210X\027~WRN\214sV\270(\330\225(\370\331\315\317*\334Cqo\266\204\213\2630E\374\205?\256\260\255^7\350[\261\357w~\256\241\255\021\237\036\365\202\300\207\274\300_x\014NtWA\247\303\3336\250\316\n\3736 T\350l\254\243\215\002\317\232W\301^[\372\367&P\201\037\276\264;\021'LLt\020\346(\355~\221v\330,\360c\260\332.l.\023! \233\002\216\360\023\374#&T\0014#\373\303\032jV\r\212\227\264uI\241\236\020\013\271\213\236\275\355n\242\246B\030\344\033\257o\374@\260_\333\360\304\337\241\361\300 \345\rh\206\000\215\357\270\312\rO#\236\010<\344\004\211\177\240&v\230\037\326\200\000\356S\264\337\310\377\3756\355V\207Gn(\314\207\301E\276\353F\260\203\365\230;.\330\243Fh\273\021:\3320\336=\262\301\300>\206\\\032\n`\003\212\025j\240\221\n\270G\333_\232\314@\301#k\230\245\204\211\001\037\311\007\030\3655ha\001\341w\266\\\230\244\033IN\251E\025\346\224\341+;z>\321\265\260\2074\307M\n\310\232YM\302s\211\323\teG\000M-\232@\003\004R\020o+t\233\322\250\352\220/\264\267\201\256\300+R\214\032\232U\340\007\350\346\355\r\030Amv\277\371\023hN#I&\241\035\240\2150\325\2745\257\262\310O\206\237\202\016z<\310\276\320N\324\347\246i\3010\224\216\373\001\027s\201\374\356\323H\006]##\000\371\036\254\025\204\3646\"\nr\210\301x\261\321\001U\302\351\311\265\300X\226\375/\355i\271\265\241\321\272\212j\305R\212t\200\026\230Q\360\264\202\246\244gV\233\245\355\003\220'\034\324\353/W\274\001N\326\2750\364C|v\337s\370\256\372\206\032\275\006\263\026\337)a\301mG\240!\262\207Jmt-\327\375\321a\273\234j*zO\345V\314\024i&bt\243\267m#\206\364\344i\\\234\211\036\266TT3\322S\316\335\002\"Y,L\207\001\036i\"\245\337\006\0025\"\231\206\034\246,\240=>\366{\302s@\327\032\350hIN\315\025i\234\213\232\211\036\tx\007\200<R\355\344j\347{\n\240\207\241\300\027\314\245\344D\341 Z\372\020\251\331\032\000\003F\263*-(\240:\306\311\245\263e\016L\232\336\014\021\035PN\031\311\217K\020\324N531\336\341\001\023\342E6q\017\033\346y\331\003\223\007\256Gy\265\343\266x\031lm\255Vc\231\377\312\001\004/[\340\016S\010O\276\037|\332(#\223\034=""\237oi\355!\326\317\355\236\246\325\362\243\230\272/\326\226\027!9P[Z~\362b\314\270\020\2258.\004'v\350 \217\313\360\337\265\372\322\215\233\346OY\272[\322M\3310\254\002[\202\323*[\004[\230\2307xi\222\365L_\222EN[\022\315\204q(\006\030\355x$_e\233\270\230\275c}q\372>y\314\201H\240\313b\246W\037[a\362\306\354\327\333\270U\241\351Z\010\311\307\246\335z\312\026\272\260~`\027[\030\"\2670l\351\330Q\\Y\201\315\016+hL\322\n:\274S\272\263j#\316\344\307\352\335\213\016\354G\331\275\254ss\302\243\275\365\371\215\212\360L[}\262\030\327\215o\032\364\301\274\nw\327\301\256m\267\203N\213\350\270|\263^1\017\027\002THH\275\362I9\236\270\027`\216\230\"\356*A\023\272\272G\346\221\3166{\364=F\314\236\210\3612\201\250\016\271\257\t\353\023\330n\0109n\260\323Q\033\3623Z&\302\244KD\317X\301Y2JF\336d\364D\230\236e*'\237\004~u\323\217\205\217\214\234\020\267\245b\344vA\223m\217\373\275\250\323\257\245\351\243\006G\2519\220\225&_\2330\241\357\362\216#3QN\215\230X\250\200\303y\017Z\020\002u\021\271\002\200\001y\300\227\024\007\371F\tuhdFW\247\245f\2706@\0269\301\340\235&(\t\241j\350\324\221F~\242//{\226\036\031\274\263\331\316\2065/\251<S\216\246\247sK\"v!\301\2309\212S(!Bv\264\004\221bR\206UZ\334d\253n\217L\022\351\235\224\020\312\021Q\234\310\003\321&%\321@\3031u7U\206\016\243\246\364j\201T\235\261\231\232\\y\236\263\344\334\2274\221\331\263s9\352\224L\331\345\331\214\204\036OP\344q\216\035\354`i\205\311%;\3220\315n\215\320a\237~\010\351D\316<\010\022\003\331\217\367\347\264.\301\236H8pG\030R\312/\3616l\033`\314u\026\220\004\"\260r\241\236\302a8h\223\300A\365P\222{\312>fK\354\366m\266(l$\373\023\273\251H\242CX\207\214\026\034\362@]\000\024\013\254\260\233Uvs\205-K/+\201\204rl\0006Lz-\235i\035\201\024\363B\273\347\265\246\007f\361\355\353*{\374\344\355\341\263\030n\006|\246\016\230\333&\005j\340\024GUG\031\241|\2251\347=\344\002\302\326\204\263z\321yVX\006)\253D\204 D|\250L\261\332'\3420\233\245\201\227\270\200P\021\362\036h!EL\255`\211\350\252D\227\231\344t0,\025=\r\"\202\306(\002K\364""\020?'\201C\267#\211'\031\003\322I\2346\2071\324^\016\202\022O\273H*(\033\213\317\245b\n\240'\240/r;\001x\223\232|,\374\225*4N\202c\020\370H\031&AB$@v\322\316\331\314PLz\362\306p8\2659\337 \016\257%\266\341J.\0233Aq\340\007\275\216\251I\244\205N\257\203RY \333TFd\002\366\036\005Y\342\344iz\304B\260=\212\2464\0353\341\340\330\242\207V\313\357AZ\034\264\004S\034\"~\207\343\025H7\224\377\354S\321\302b\002\321\020:BN\211U\3003\323\271\302\340\274\006\354!,9\034A|\362\350\301\375\357\000\352\352\213&[\002tV\004\3113\007?\031\257\336X\376\254b\274'\361\354\346\255E\363l\272\020\366\301\257+p}\223\321\252\226\354\314\301*\230\021@\t::N\222\001\200\234\020\224\242\375L\203!\022 ,L\2622\032Y\2220D\365n\313\026\247\006\211\001L*\376\004!f\251\230d\341T\"\314\007\323\305\2258+\005kI\036\236r\036\344\206\327\311\311\003\351lX2\003,%F\373w\2008}\200h\366&P%\205\234\250\217\343\320\352\255\205q3\305\243'J\224\275\t\004\226`\027q<\310\270\r)\333n\323\261\331\356\n\333\325\341\340\2641\240A\022A.\021\001\252vg\005\205BpG\206\201hS\276~\253!\337\372\254!\337\372\270\220O-\374q\">U\2444\003\262M\210\367\\S\222\213\007\200\231\240N\365\2251\035^]I\005uca\214f\325\354\271\035'\232\n~\022\227b\252\272\374\007\371\240a2\3237ri\371!T\341\004\276\254X\010]\340\335\356\250c\303\366Q`5\022\220\t\235\232\036\244\356\245\037\344\205^@\014\216X\335m\327\351a}G*\350Rx5:\225\314\214g\205\262L\200E+}\232\361\325\372y\210\257fD2\327\223>\203^ES\237\031\251kNB\027\213\246\036\216\3143\356`\332\024Z\373i\242@\243:r\227\014\273\216U\3041\330w\372Q\325\233\312Y\216\213\325\232.\372\272\3110mc\t\217\205\227\001z\360\224S\006l\033\030\274\335\200\223b\rBh\351\301p\325\240\216\212\207UA'?b+\333\371\224\233\031\312g\013[2X[\372\374V\245\313\341r\310\302U\334%\321\371\216\276\376\212\234\246J\"P+\034\025\347Pe\353$\265\030\017E)$\"\2014D=y\267\211b\302Z]U\344\232\272\254i\252\234(~\301R\227\016\317\216\253\010\312@K\357t\034@\024q$\353Z\251\354\\\024g\000]\252B\202\213\257\340\014&\322-\211\333N%\252\206""\302\022\276\307\252\252)\002\020\021\231\257 \340vH\340I\254S\2210VFA\330\210\227h\253\211\322\023]\316\216\271\235P\265(\305\366S`#\300\023x\007U\265\306\224\250\240\370\311'\0241\363n\350+K\351\225\246\274\036q\346C\253\300\217\\QNY\322\267y\023EP\230\305u\203\016O\356u\331\014\375\211\004F&\366\214\320\336Q\35014\324J\201\320i9j`\340\200\212\007\360\275\315\021\357f\233\n\034\364\246\347\242\231\254\225\216\025e\235\014\235\0248)yHh\242\r3>\276:Vx%\201:\025tH\204\222\212\370%\026c9\220\021\024\0016\242\372\030M\203\\nR\227\025\t)\0011\246\020\001\025n\241.R\350\256\224\261T\322H\245U\201V\327\242\315\002\363&\2131b!\354\\\254\221\273]\035,\000u\r#\232:\302\2010\230\030\267\224a3\225\241\204\005\343\2212\030\211\362\213JI?\247\230F<-\225\276\246]\225bd\013\252+\023;\253\224\241\275$\242!\244~CE;7%}\361\233z\206\313\257\221$\261)\246\302\221\343\302\0101*QD\201\010I\375\310\200\010+67\350$\201\3563\375\313\340\316\261\265h\026\330!\021\316\206=\002\362\300\034m\213m\002\373\246\335A\241\226\232\375<\237\020\030\246\242Y\362\250\214\327\226u\020\225\373I\373\3318\243\2705K\t`A8Q\354I\320\220!#m\345jz^R\336\302\335O\214\250\217\362\220\277\222\344O^G\022\350\007\237\024\240A\322<\364\301X\353!\0102\025\272\3224\245\213\213w\376\005-s;\271d,Q\3726\351\211\221\255\224\203\006\314nSM\272:\004\311\207\257\221\000/\271GJc\242<B\006\275\222G\254\242\222\031\312\275an\276\031\377\305\230o\035\364\2658@#\305\305\372\356\261\034\017U.y\022\207\254t\005\326H\033\217\020\240\202\217\332y\202\347\314\202\374\n\261\032\252\333\303\304\215E \237\271;\205\352\202\273E\\\340Hl\230\t\326@\255ef\357\215G`\r\276Yw}t\315S\311\177\343\255O\000_\0014Q\257[\245\364a\235\240\026\257F\321\267E\361uQ\202e]\376\014\027\217\263\024\332\340\274\304#4\250\263@X\240\221\023\344%\332\253fg\207\301\302\325\021@\\\277\265\\\361|u\225\205YVH\027$-\2139\342\002\004\356d\000\237m\270\303\003\277\266\300\243\213-\353O\002\217\"\312\322\334\321u\341\247\363\236\214\243\274\201\365'\231\313Y\231\353\033g}""\340w\342\322\370i\363\237Z\356G\275J#\236p\323\003\354\336\350\273\t\222I\243|3\240l\276\274K\325\352A\216\017L\245\252\232H\3626\343[8\330\230\227p\210\303\2731o\341\220w\307\\\270\330\031R\001\270\274L\"\032VG\020*q/,\021H\202`\351*\013\316O\314$%\344\374\367{\260\274\327{\224\212o\342\375\036\351\033^'z\277\207~m\207\230\237y\277\307\210c\261.]\212\t>Ej\365S\357\2750\327\237G\226\010(\246\026I\257\346\204\325\232\352\326\326H\211\220\276\2745F=\214\036\375\312\337L2b\007\306\275\233\204N\234\307Y\200\311\3459\247x\337\350\374\277\275\004.\204eN+?au\361\223\001E\361j\221E\363f\023\350\225|g\326H{j\371\263l)\256\302<\207\357\343\033\243g\001n\005\336\250\214C\r\214\267?l\332\341\207\330\031\234\017tQ0+P\206g\345\027g\370\202\023s\211L\336|Y\\\252\230CrY\020T\377\334<\233\256 h\375WT\020t\3142\200\351\035\007-\333c\226\004\311<E\222\320\344\242 \261k\323\347\251\202\210(\014J04\2660H\320x\203\245A\t&N\2454h}\272\322\240\324IZJ\024o\2418(1\332\277\213\203f-\016\022\032|\242\362\240\267p\221\344-\027\007\275\241R\332S+\0172\270\222*\017J\244\317\317\014\032\205\350\026\246\211\177\037\277U\234{<+\316\215\275\021b\226\3768\005B:?>\013\322\345\227\010\245o\202\214)\022R\275\307\025\tM\204\265\231\n\205\322W-\252x\310\0030\270\255\353\204t\335E\306M%1\271\230\005\315\212i\246\352 \241R\263\340\324\275\354\2437S!4\373-\014\265f\006\316\222oX8%<;\373[\030\017f\276\2051\271J\310\350\024\020\325\233\357\210J\241\354\312MS\024\364&\256o\374K\224\004I\353N)\350I\305@\212\346\247\313\232\322\315\345\263\006%U\374s\343\363\212\224\220e}\327\337\205\377\177\001\233\300\372\206\357\306\300\036\364\262,\0206\374AuR\251\000;\352{-\327\257\201\262\200\221\005:\021$\222\341(?\262\344\313\020\360+<\206\246V\254^\344\200\334$8rdPK\207\010\216\333\226\242\260D8)\336\016&U\035\267\214\035\243\232Z\226\370+\022\t\364o\204\231;\313J\275k\301\274\007\314r#Ks\351\306\306u\222\032FJd\341k],\271IS_j:}\336\"\001[V\366\347Hq\240\032\200\256k\037Pl\r\324\376\247;p\370\004R\302W\335\301_L\332\233""\314=<\240E\005\352\026\276\021\004\376\202\370\315;1\340\272\025\374\017Y\325>\233e\301K$\254\026L\000;\341g)\207g`\230\005\r\223\371\037\235\204z\300wq\006\2356\315C\216\r\237\344\270\211\331Y93\265,TtK\256\230N\003h\177L(\032\231\020a\261\277\353\177K\307=\354\352\202\371Xe\343>C\324\307\344\334\236\272\201\005*\001\231\241\326\026\345Dz-\365\233\037\304\026\311\266~#\245\003\326\347F\tD\356\350\252\356@\307\201\324\253R8[\2460mr\316\3702\371\234c3vz\314\310\214\3419\340$\021u\235\023n\320\212\237\003VL\304{>\2309'b1)\320\363\301\314\211\3042\363\200-K\276\337\363m\016\2318\013\237i\330\343\0165f\024\3610\236D\240\215\036\004\241<\033#\200\253\225\002.\177\346W\013\336\244\3673\267\262m3\035\tY\n\n_\n\332\240\027\2045-\030SV\220v\244\2407qA\354\240\202V\337\202\320\235\202Z\321BR\316\352\013Q\306)\241w\004bV.%\272\221\007\205?\376\263\376\272=W\270\360\301\260\376j\356\335\275\315\301\303\303\271w\366\376gxy\370\321\360\341\320\306/?\342\263\322\340\312\240~8wi\357\331`n\360\333\301\352\340\207\341\225\341\247\373\227\367\257\034\316\277\263\2676\370`\360\375`w\270\275\377\343\313\207\207\363\027\367V\367~\030\\9\234{o0wP\370\363/W^;'\036\342o\003\033\006xvx\341\235\275\207{[\203\255\341\326\276-\007\270\373K\375u\347\204\003\274\0134m\375\017\016\327\034^\030\326\305p\034\273\321P\277\337\277\362\2721W\200\006w\201\312\245A4\374p\370\305\376\305\375\257^\332/{\177_\375\373\332?.\037\316\227\006\037\017\236\r\347\260\313%\370pi\370\354\240\360\345/\366\353o\240\343%\301\336\305\203\213\377I\274\315\377\007\264\2708\\}\005B\373\313\240>X=\234\273\260W\307\217r\304\257\016\276\262\016\254\306\353m\350\374\376\240<\374\000\2729\373\177\330\267\367\237\035\252\311N\242V\034\\~\005\002x\014\237\347Q\016\217\200\261\013B\004\227\017/\274?\370lx\345\360\302\273\007\357\376n\370l\177\356\360\342e\220Zy\377\362\253\213\305\301\357\206s\303\313\257\240\355\016\210\004Z\326\017\347\261\337\373 \225\371\337 9\220\347\253\271\213{\377=\270;xv8\377\336\340\"\210\364!,\323\263W""\352\013rh\357=\037*U\370\352\377H\025\316\345D\222\234\356\001\201\322\340\223\341\303\203\302\307/\037\022\313\323\256\370o\206\253\303\365\375\317^^9(\334>\270\375\303\301\017\353\257\327\346\013\363\027\224n](\r\376\2002:\234\207\t\035\276W\304\311<<\274p\221\276\037\024V\376y\345u\363\204\272\214\333ompy\2600\254\354\337z\251\024\351\264(\3778\370q\270\006_\027^*Y\275\376\t\344S\034\274\007b\376\355\360\313\375O^>|\371\323?\346\376\037\024\331\303U";
11224
+ PyObject *data = __Pyx_DecompressString(cstring, 5756, 1);
11225
11225
  if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
11226
11226
  const char* const bytes = __Pyx_PyBytes_AsString(data);
11227
11227
  #if !CYTHON_ASSUME_SAFE_MACROS
11228
11228
  if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
11229
11229
  #endif
11230
- #else /* compression: none (27590 bytes) */
11231
- const char* const bytes = "{0}() got an unexpected keyword argument '{1}'.?assoc(d: collections.abc.Mapping[K, V], key: K, value: V, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `Mapping`[1] with `key` associated with `value`.\n\n\tYou can use `assoc` (***assoc***iate) to copy `d` (***d***ictionary) to a new `Mapping` created by\n\t`factory` and assign `value` to `key`. `assoc` does not change `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkey : K\n\t\t`key` that `assoc` inserts or replaces.\n\tvalue : V\n\t\t`value` that `assoc` assigns to `key`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `Mapping` with `key` associated to `value`.\n\n\tExamples\n\t--------\n\t>>> assoc({}, 'a', 1)\n\t{'a': 1}\n\t>>> assoc({'a': 1}, 'a', 3)\n\t{'a': 3}\n\t>>> assoc({'a': 1}, 'b', 3)\n\t{'a': 1, 'b': 3}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tassoc_in(d: collections.abc.Mapping[K, V], keys: collections.abc.Sequence[K], value: V, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `MutableMapping` from `d` with `value` at the path specified by `keys`.\n\n\t(AI generated docstring)\n\n\tYou can use `assoc_in` to produce a copy of `d` with `value` placed at the nested\n\tlocation given by `keys`. `assoc_in` creates intermediate `MutableMapping` instances\n\tas needed when a key in `keys` is absent from `d`. `assoc_in` does not mutate `d` or\n\tany nested `Mapping` within `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkeys : Iterable[K]\n\t\tNon-empty sequence of keys specifying the nested path to the target location in `""d`.\n\tvalue : V\n\t\tThe value to place at the location specified by `keys`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates each new `MutableMapping`[1] in the result.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `MutableMapping` based on `d` with `value` at the path specified by `keys`.\n\n\tSee Also\n\t--------\n\tupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\tget_in : Retrieve a value at a nested path in a `Mapping`.\n\tassoc : Create a new `Mapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> assoc_in({'a': 1}, ['a'], 2)\n\t{'a': 2}\n\t>>> assoc_in({'a': {'b': 1}}, ['a', 'b'], 2)\n\t{'a': {'b': 2}}\n\t>>> assoc_in({}, ['a', 'b'], 1)\n\t{'a': {'b': 1}}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tassoc_in (line 655)assoc (line 608)disabledissoc(d: collections.abc.Mapping[K, V], *keys: K, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `MutableMapping`[1] from `d` with the specified `keys` removed.\n\n\t(AI generated docstring)\n\n\tYou can use `dissoc` (***dissoc***iate) to copy `d` (***d***ictionary) to a new `MutableMapping`\n\tcreated by `factory`, then remove each key in `keys` from the result. `dissoc` does not change\n\t`d`. Keys in `keys` that are absent from `d` are silently ignored.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\t*keys : K\n\t\tKeys to remove from `d` in the returned `MutableMapping`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingReduced : MutableMapping[K, V]\n\t\tNew `MutableMapping` containing all items from `d` except those whose keys are in `keys`.\n\n\tAlgorithm Details\n\t----------------""-\n\t`dissoc` selects between two strategies based on the ratio of removed keys to total keys.\n\n\tWhen fewer than 60% of keys are removed, `dissoc` copies all items from `d` and then\n\tdeletes the specified keys one by one.\n\n\tWhen 60% or more of keys are removed, `dissoc` computes the set of remaining keys and\n\tcopies only those items to the result, avoiding unnecessary copy-and-delete operations.\n\n\tSee Also\n\t--------\n\tassoc : Create a new `MutableMapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> dissoc({'x': 1, 'y': 2}, 'y')\n\t{'x': 1}\n\t>>> dissoc({'x': 1, 'y': 2}, 'y', 'x')\n\t{}\n\t>>> dissoc({'x': 1}, 'y') # Ignores missing keys\n\t{'x': 1}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tdissoc (line 747)enablegcget_in(keys: collections.abc.Sequence[K], coll: humpy_toolz.dicttoolz.SupportsGetItem[K, V], default: Optional[V] = None, no_default: bool = False) -> Optional[V]\n\n\tRetrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.\n\n\t(AI generated docstring)\n\n\tYou can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a\n\tsequence of `keys`. `get_in` applies each key in `keys` sequentially using\n\t`operator.getitem`[1]. If the path does not exist, `get_in` returns `default`. If\n\t`no_default` is `True`, `get_in` re-raises the original exception instead of returning\n\t`default`.\n\n\tParameters\n\t----------\n\tkeys : Sequence[K]\n\t\tSequence of keys that describes the path to traverse in `coll`.\n\tcoll : SupportsGetItem[K, V]\n\t\tCollection to traverse. `get_in` applies each key in `keys` to the current `coll`\n\t\tusing `operator.getitem`[1], so `coll` can be any nested structure such as a `dict`\n\t\tor `list`.\n\tdefault : V | None = None\n\t\tValue to return when the path in `keys` does not exist in `coll`.\n\tno_default : bool = False\n""\t\tWhen `True`, re-raise the original `KeyError`, `IndexError`, or `TypeError`\n\t\tinstead of returning `default`.\n\n\tReturns\n\t-------\n\tvalue : V | None\n\t\tThe value at the nested path in `coll`, or `default` if the path does not exist.\n\n\tRaises\n\t------\n\tKeyError\n\t\tWhen `no_default` is `True` and a key is missing from a mapping.\n\tIndexError\n\t\tWhen `no_default` is `True` and an index is out of range.\n\tTypeError\n\t\tWhen `no_default` is `True` and a key type is incompatible with `coll`.\n\n\tSee Also\n\t--------\n\titertoolz.get : Retrieve a value or values from a collection.\n\toperator.getitem : Return the value at a given key in a collection.\n\tassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\n\tupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\n\tExamples\n\t--------\n\t>>> transaction = {'name': 'Alice',\n\t... 'purchase': {'items': ['Apple', 'Orange'],\n\t... 'costs': [0.50, 1.25]},\n\t... 'credit card': '5555-1234-1234-1234'}\n\t>>> get_in(['purchase', 'items', 0], transaction)\n\t'Apple'\n\t>>> get_in(['name'], transaction)\n\t'Alice'\n\t>>> get_in(['purchase', 'total'], transaction)\n\t>>> get_in(['purchase', 'items', 'apple'], transaction)\n\t>>> get_in(['purchase', 'items', 10], transaction)\n\t>>> get_in(['purchase', 'total'], transaction, 0)\n\t0\n\t>>> get_in(['y'], {}, no_default=True)\n\tTraceback (most recent call last):\n\t\t...\n\tKeyError: 'y'\n\n\tReferences\n\t----------\n\t[1] Python `operator` module\n\t\thttps://docs.python.org/3/library/operator.html#operator.getitem\n\tget_in (line 893)humpy_cytoolz/dicttoolz.pyxisenableditemfilter (line 541)itemfilter(predicate: collections.abc.Callable[[tuple[K, V]], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose key""-value pairs satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `itemfilter` to select items from `d` (***d***ictionary) by both key and value\n\tsimultaneously. `itemfilter` calls `predicate` with each item yielded by `d.items()`. Each\n\titem is passed to `predicate` as a `tuple[K, V]`. `itemfilter` inserts each item for which\n\t`predicate` returns `True` into a new `MutableMapping`[1] created by `factory`. `itemfilter`\n\tdoes not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[tuple[K, V]], bool]\n\t\t`Callable` applied to each item of `d`. Each item is passed to `predicate` as a\n\t\t`tuple[K, V]`, and `predicate` must return `True` for the item to be retained.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `itemfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` for which\n\t\t`predicate` returns `True`.\n\n\tSee Also\n\t--------\n\tkeyfilter : Retain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\tvalfilter : Retain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\t>>> def isvalid(item):\n\t... k, v = item\n\t... return k % 2 == 0 and v < 4\n\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> itemfilter(isvalid, d)\n\t{2: 3}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\titemmap(func: collections.abc.Callable[[tuple[K, V]], tuple[L, W]], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[L, W]] = dict) -> collections.abc.MutableMapping[L, W]""\n\n\tApply `func` to all items of `d` and return a new `Mapping` with the transformed items.\n\n\t(AI generated docstring)\n\n\tYou can use `itemmap` to transform all keys and values in `d` simultaneously without\n\tchanging `d`. `itemmap` applies `func` to each item yielded by `d.items()`. Each item\n\tis passed to `func` as a `tuple[K, V]`, and `func` must return a `tuple[L, W]`. `itemmap`\n\tinserts each returned `tuple` as a new key-value pair in a `MutableMapping`[1] created\n\tby `factory`.\n\n\tParameters\n\t----------\n\tfunc : Callable[[tuple[K, V]], tuple[L, W]]\n\t\t`Callable` applied to each item of `d`. Each item of `d` is passed to `func` as a\n\t\t`tuple[K, V]`, and `func` must return a `tuple[L, W]` containing the new key and value.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `itemmap` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[L, W]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[L, W]\n\t\tNew `MutableMapping` created by `factory` populated with each `tuple[L, W]` returned\n\t\tby `func`.\n\n\tSee Also\n\t--------\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> accountids = {'Alice': 10, 'Bob': 20}\n\t>>> itemmap(reversed, accountids) # doctest: +SKIP\n\t{10: 'Alice', 20: 'Bob'}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\titemmap (line 357)keyfilter (line 480)keyfilter(predicate: collections.abc.Callable[[K], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\n""\t(AI generated docstring)\n\n\tYou can use `keyfilter` to select items from `d` (***d***ictionary) by their keys. `keyfilter`\n\tcalls `predicate` with each key yielded by `d.keys()`. `keyfilter` inserts each item whose\n\tkey causes `predicate` to return `True` into a new `MutableMapping`[1] created by `factory`.\n\t`keyfilter` does not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[K], bool]\n\t\t`Callable` applied to each key of `d`. `keyfilter` keeps each item for which `predicate`\n\t\treturns `True`.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `keyfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` whose keys\n\t\tcause `predicate` to return `True`.\n\n\tSee Also\n\t--------\n\tvalfilter : Retain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\titemfilter : Retain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\n\t>>> iseven = lambda x: x % 2 == 0\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> keyfilter(iseven, d)\n\t{2: 3, 4: 5}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tkeymap(func: collections.abc.Callable[[K], L], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[L, V]] = dict) -> collections.abc.MutableMapping[L, V]\n\n\tApply `func` to all keys of `d` and return a new `Mapping` with the transformed keys.\n\n\t(AI generated docstring)\n\n\tYou can use `keymap` to transform all keys in `d` without changing `d`. `keymap` applies\n\t`func` to each key yielded by `d.keys()""` and builds a new `MutableMapping`[1] created by\n\t`factory`, associating each transformed key with the corresponding original value of `d`.\n\n\tParameters\n\t----------\n\tfunc : Callable[[K], L]\n\t\t`Callable` applied to each key of `d`. Each key of `d` is passed to `func`\n\t\tindividually, and `func` returns the corresponding transformed key.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `keymap` reads all keys from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[L, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[L, V]\n\t\tNew `MutableMapping` created by `factory` in which each key from `d` is replaced by\n\t\tthe result of applying `func` to that key, associated with the original value of `d`.\n\n\tSee Also\n\t--------\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> bills = {'Alice': [20, 15, 30], 'Bob': [10, 35]}\n\t>>> keymap(str.lower, bills) # doctest: +SKIP\n\t{'alice': [20, 15, 30], 'bob': [10, 35]}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tkeymap (line 298)merge(*dicts: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\nMerge a collection of dictionaries and return a new `Mapping`.\n\n(AI generated docstring)\n\nYou can use `merge` to combine two or more `Mapping`[1] objects into a single new `Mapping`.\n`merge` calls `factory` to create the result, then updates it in order with each `Mapping` in\n`dicts`. When the same key appears in more than one element, the value from the later element\ntakes precedence. You can also pass a single `Iterable[Mapping[K, V]]` as the sole positional""\nargument instead of multiple `Mapping` arguments.\n\nParameters\n----------\n*dicts : Mapping[K, V]\n\t`Mapping` objects to merge. Alternatively, pass a single `Iterable[Mapping[K, V]]` as the\n\tsole positional argument.\nfactory : Callable[[], MutableMapping[K, V]] = dict\n\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\nReturns\n-------\nmappingMerged : MutableMapping[K, V]\n\tNew `MutableMapping` created by `factory` containing all key-value pairs from `dicts`. For\n\tduplicate keys, the value from the last `Mapping` in `dicts` that contains the key takes\n\tprecedence.\n\nSee Also\n--------\nmerge_with : Merge dictionaries and apply a `Callable` to combined values.\n\nExamples\n--------\n>>> merge({1: 'one'}, {2: 'two'})\n{1: 'one', 2: 'two'}\n\nLater dictionaries have precedence\n\n>>> merge({1: 2, 3: 4}, {3: 3, 4: 4})\n{1: 2, 3: 3, 4: 4}\n\nReferences\n----------\n[1] Python `collections.abc` module\n\thttps://docs.python.org/3/library/collections.abc.html\n\tmerge (line 98)merge_with(func: collections.abc.Callable[[list[V]], V], *dicts: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\nMerge dictionaries and apply a `Callable` to combined values.\n\n(AI generated docstring)\n\nYou can use `merge_with` to combine two or more `Mapping`[1] objects and resolve key conflicts\nby applying `func` to a `list` of all values associated with each key. For each key that\nappears in one or more elements of `dicts`, `merge_with` collects all associated values into a\n`list` in the order they appear across `dicts`, then calls `func` with that `list` to produce\nthe value in the result. You can also pass a single `Iterable[Mapping[K, V]]` as the sole\npositional argument after `func`.\n\nParameters\n----------\nfunc : Callable[[list[V]], V]\n\t`Callable` applied to the `list` of values associated with each key across all `Mapping`\n\tobjects in `dic""ts`. `func` receives a non-empty `list` and must return the merged value for\n\tthat key.\n*dicts : Mapping[K, V]\n\t`Mapping` objects to merge. Alternatively, pass a single `Iterable[Mapping[K, V]]` as the\n\tsole positional argument after `func`.\nfactory : Callable[[], MutableMapping[K, V]] = dict\n\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\nReturns\n-------\nmappingMerged : MutableMapping[K, V]\n\tNew `MutableMapping` created by `factory` where each key maps to the result of calling\n\t`func` with all values associated with that key across `dicts`.\n\nSee Also\n--------\nmerge : Merge a collection of `Mapping` objects into a new `Mapping`.\n\nExamples\n--------\n>>> merge_with(sum, {1: 1, 2: 2}, {1: 10, 2: 20})\n{1: 11, 2: 22}\n\n>>> merge_with(first, {1: 1, 2: 2}, {2: 20, 3: 30}) # doctest: +SKIP\n{1: 1, 2: 2, 3: 30}\n\nReferences\n----------\n[1] Python `collections.abc` module\n\thttps://docs.python.org/3/library/collections.abc.html\n\tmerge_with (line 185)no default __reduce__ due to non-trivial __cinit__<stringsource>update_in(d: collections.abc.Mapping[K, V], keys: collections.abc.Sequence[K], func: collections.abc.Callable[[V], V], default: V | None = None, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tApply a `Callable` to a value at a nested path in a `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `update_in` to produce a copy of `d` with the value at the nested path\n\tspecified by `keys` replaced by the result of calling `func` on the current value.\n\t`update_in` creates intermediate `MutableMapping` instances as needed when a key in\n\t`keys` is absent from `d`. If the innermost key is absent, `func` receives `default`\n\tinstead of an existing value. `update_in` does not mutate `d` or any nested `Mapping`\n\twithin `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkeys : Sequence[K]\n\t\tNon-empty seq""uence of keys specifying the nested path to the value to update in `d`.\n\tfunc : Callable[[V], V]\n\t\t`Callable` applied to the current value at the path in `keys`. If the innermost\n\t\tkey is absent from `d`, `func` receives `default`.\n\tdefault : V | None = None\n\t\tValue passed to `func` when the innermost key is absent from `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates each new `MutableMapping`[1] in the result.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `MutableMapping` based on `d` with the value at the path specified by `keys`\n\t\treplaced by the result of `func`.\n\n\tSee Also\n\t--------\n\tassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\n\tget_in : Retrieve a value at a nested path in a `Mapping`.\n\tassoc : Create a new `Mapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> inc = lambda x: x + 1\n\t>>> update_in({'a': 0}, ['a'], inc)\n\t{'a': 1}\n\n\t>>> update_in({}, ['z'], inc, 0)\n\t{'z': 1}\n\n\t>>> update_in({}, [1, 2, 3], str, default=\"bar\")\n\t{1: {2: {3: 'bar'}}}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tupdate_in (line 802)valfilter (line 419)valfilter(predicate: collections.abc.Callable[[V], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `valfilter` to select items from `d` (***d***ictionary) by their values. `valfilter`\n\tcalls `predicate` with each value yielded by `d.values()`. `valfilter` inserts each item whose\n\tvalue causes `predicate` to return `True` into a new `MutableMapping`[1] created by `factory`.\n\t`valfilter` does not change `d`.\n\n\tParameters""\n\t----------\n\tpredicate : Callable[[V], bool]\n\t\t`Callable` applied to each value of `d`. `valfilter` keeps each item for which `predicate`\n\t\treturns `True`.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `valfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` whose values\n\t\tcause `predicate` to return `True`.\n\n\tSee Also\n\t--------\n\tkeyfilter : Retain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\titemfilter : Retain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\n\t>>> iseven = lambda x: x % 2 == 0\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> valfilter(iseven, d)\n\t{1: 2, 3: 4}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tvalmap(func: collections.abc.Callable[[V], W], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, W]] = dict) -> collections.abc.MutableMapping[K, W]\n\n\tApply `func` to all values of `d` and return a new `Mapping` with the transformed values.\n\n\t(AI generated docstring)\n\n\tYou can use `valmap` to transform all values in `d` without changing `d`. `valmap` applies\n\t`func` to each value yielded by `d.values()` and builds a new `MutableMapping`[1] created\n\tby `factory`, preserving each original key associated with its transformed value.\n\n\tParameters\n\t----------\n\tfunc : Callable[[V], W]\n\t\t`Callable` applied to each value of `d`. Each value of `d` is passed to `func`\n\t\tindividually, and `func` returns the corresponding transformed value.\n\td :"" Mapping[K, V]\n\t\tSource `Mapping`[1]. `valmap` reads all values from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, W]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[K, W]\n\t\tNew `MutableMapping` created by `factory` in which each key from `d` is associated\n\t\twith the result of applying `func` to the corresponding value of `d`.\n\n\tSee Also\n\t--------\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> bills = {'Alice': [20, 15, 30], 'Bob': [10, 35]}\n\t>>> valmap(sum, bills) # doctest: +SKIP\n\t{'Alice': 65, 'Bob': 45}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tvalmap (line 239)Mapping__Pyx_PyDict_NextRefabc__all__assocassoc_inasyncio.coroutines__class_getitem__cline_in_tracebackcollcollectionsddefaultdictsdifference_updatedissocfactoryformatfunc__func__get_in__getstate__humpy_cytoolz.dicttoolz_is_coroutineititemfilteritemmapitems_iter_mapping_iter_mapping.__reduce_cython___iter_mapping.__setstate_cython__keykeyfilterkeymapkeyskwargs__main__mergemerge_with__module____name__nextno_defaultpoppopitempredicate__pyx_capi____pyx_state__qualname____reduce____reduce_cython____reduce_ex__self__set_name__setdefault__setstate____setstate_cython____test__updateupdate_invalfiltervalmapvaluevaluesPyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_assoc *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_assoc_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttool""z_update_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_get_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_itemfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_itemmap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_keyfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_keymap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_valfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_valmap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_dissoc *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_merge_with *__pyx_optional_args)\000PyObject *(PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_merge *__pyx_optional_args)\000__pyx_t_13humpy_cytoolz_9dicttoolz_f_map_next (PyObject *, PyObject **)\000int (PyObject *, Py_ssize_t *, PyObject **, PyObject **)\000assoc\000assoc_in\000update_in\000get_in\000itemfilter\000itemmap\000keyfilter\000keymap\000valfilter\000valmap\000c_dissoc\000c_merge_with\000c_merge\000get_map_iter\000PyMapping_Next\320\000;\2701\360f\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\005\200T\210\024\210R\210x\220v\230X\240Q\330\002\004\200A\200U\210!\330\001\010""\210\001\320\000B\300!\360d\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\005\200Y\210a\210x\220q\330\003\005\200Q\200h\210h\220h\230a\330\001\010\210\001\320\000C\3001\360l\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\006\200h\210a\330\002\006\200h\210a\330\002\005\200Y\210b\220\003\2201\330\003\005\200Q\200e\2101\330\001\010\210\001\320\000\032\230!\360`\001\000\002\005\200C\200q\210\007\210s\220\"\220D\230\004\230J\240a\240u\250A\250T\260\021\330\002\n\210%\210q\220\001\330\001\010\210\007\210q\220\007\220q\320\000F\300a\360N\001\000\002\007\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\003\2001\200G\2101\330\001\010\210\001\320\000J\320J_\320_`\360v\001\000\002\013\210'\220\024\220Q\220d\230$\230a\230q\330\001\006\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\t\210\021\340\001\005\200W\210A\330\002\005\200X\210S\220\001\330\003\007\200q\210\001\210\021\330\003\013\2107\220!\330\003\006\320\006\027\220q\230\001\330\004\021\220\021\220'\230\021\340\004\t\210\027\220\001\220\021\340\003\007\200w\210a\330\003\013\2101\330\002\007\200q\210\013\2201\330\002\014\210A\330\002\n\210!\340\001\004\200H\210C\210q\330\002\010\210\004\210A\210Q\210a\210q\340\002\010\210\004\210A\210Q\330\001\006\200a\200{\220!\330\001\010\210\001\320\000J\310!\360d\001\000\002\013\210'\220\024\220Q\220d\230$\230a\230q\330\001\006\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\t\210\021\340\001\005\200W\210A\330\002\005\200X\210S\220\001\330\003\007\200q\210\001\210\021\330\003\013\2107\220!\330\003\006""\320\006\027\220q\230\001\330\004\021\220\021\220'\230\021\340\004\t\210\027\220\001\220\021\340\003\007\200w\210a\330\003\013\2101\330\002\007\200q\210\013\2201\330\002\014\210A\330\002\n\210!\340\001\006\200a\200{\220!\330\001\010\210\001\200\001\330\004\n\210+\220Q\320\000%\240Q\360d\001\000\002\005\200C\200q\210\007\210s\220\"\220D\230\004\230J\240a\240u\250A\250T\260\021\330\002\n\210%\210q\220\001\330\001\010\210\014\220A\220V\2307\240!\320\000=\320=U\320UV\360T\002\000\002\003\330\002\006\200h\210a\330\003\n\210$\210a\210q\330\002\t\210\021\330\010\t\330\002\005\200Q\330\003\004\330\002\t\210\021\320\000:\270!\360b\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\004\200A\200T\210\021\210(\220)\2308\2401\330\001\010\210\001\320\000:\270!\360b\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\004\200A\200X\210X\220T\230\021\230(\240!\330\001\010\210\001\200\001\360j\001\000\002\t\210\010\220\001\220\023\220F\230+\240Q\240j\260\001";
11230
+ #else /* compression: none (27691 bytes) */
11231
+ const char* const bytes = "{0}() got an unexpected keyword argument '{1}'.?assoc(d: collections.abc.Mapping[K, V], key: K, value: V, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `Mapping`[1] with `key` associated with `value`.\n\n\tYou can use `assoc` (***assoc***iate) to copy `d` (***d***ictionary) to a new `Mapping` created by\n\t`factory` and assign `value` to `key`. `assoc` does not change `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkey : K\n\t\t`key` that `assoc` inserts or replaces.\n\tvalue : V\n\t\t`value` that `assoc` assigns to `key`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `Mapping` with `key` associated to `value`.\n\n\tExamples\n\t--------\n\t>>> assoc({}, 'a', 1)\n\t{'a': 1}\n\t>>> assoc({'a': 1}, 'a', 3)\n\t{'a': 3}\n\t>>> assoc({'a': 1}, 'b', 3)\n\t{'a': 1, 'b': 3}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tassoc_in(d: collections.abc.Mapping[K, V], keys: collections.abc.Sequence[K], value: V, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `MutableMapping` from `d` with `value` at the path specified by `keys`.\n\n\t(AI generated docstring)\n\n\tYou can use `assoc_in` to produce a copy of `d` with `value` placed at the nested\n\tlocation given by `keys`. `assoc_in` creates intermediate `MutableMapping` instances\n\tas needed when a key in `keys` is absent from `d`. `assoc_in` does not mutate `d` or\n\tany nested `Mapping` within `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkeys : Iterable[K]\n\t\tNon-empty sequence of keys specifying the nested path to the target location in `""d`.\n\tvalue : V\n\t\tThe value to place at the location specified by `keys`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates each new `MutableMapping`[1] in the result.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `MutableMapping` based on `d` with `value` at the path specified by `keys`.\n\n\tSee Also\n\t--------\n\tupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\tget_in : Retrieve a value at a nested path in a `Mapping`.\n\tassoc : Create a new `Mapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> assoc_in({'a': 1}, ['a'], 2)\n\t{'a': 2}\n\t>>> assoc_in({'a': {'b': 1}}, ['a', 'b'], 2)\n\t{'a': {'b': 2}}\n\t>>> assoc_in({}, ['a', 'b'], 1)\n\t{'a': {'b': 1}}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tassoc_in (line 655)assoc (line 608)disabledissoc(d: collections.abc.Mapping[K, V], *keys: K, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `MutableMapping`[1] from `d` with the specified `keys` removed.\n\n\t(AI generated docstring)\n\n\tYou can use `dissoc` (***dissoc***iate) to copy `d` (***d***ictionary) to a new `MutableMapping`\n\tcreated by `factory`, then remove each key in `keys` from the result. `dissoc` does not change\n\t`d`. Keys in `keys` that are absent from `d` are silently ignored.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\t*keys : K\n\t\tKeys to remove from `d` in the returned `MutableMapping`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingReduced : MutableMapping[K, V]\n\t\tNew `MutableMapping` containing all items from `d` except those whose keys are in `keys`.\n\n\tAlgorithm Details\n\t----------------""-\n\t`dissoc` selects between two strategies based on the ratio of removed keys to total keys.\n\n\tWhen fewer than 60% of keys are removed, `dissoc` copies all items from `d` and then\n\tdeletes the specified keys one by one.\n\n\tWhen 60% or more of keys are removed, `dissoc` computes the set of remaining keys and\n\tcopies only those items to the result, avoiding unnecessary copy-and-delete operations.\n\n\tSee Also\n\t--------\n\tassoc : Create a new `MutableMapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> dissoc({'x': 1, 'y': 2}, 'y')\n\t{'x': 1}\n\t>>> dissoc({'x': 1, 'y': 2}, 'y', 'x')\n\t{}\n\t>>> dissoc({'x': 1}, 'y') # Ignores missing keys\n\t{'x': 1}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tdissoc (line 747)enablegcget_in(keys: collections.abc.Sequence[K], coll: humpy_toolz.dicttoolz.SupportsGetItem[K, V], default: Optional[V] = None, no_default: bool = False) -> Optional[V]\n\n\tRetrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.\n\n\tYou can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a\n\t`Sequence` of `keys`. `get_in` applies each key in `keys` sequentially using\n\t`operator.getitem`[1].\n\n\tIf the desired key does not exist, `get_in` will `raise` an `Exception` or `return` `default`\n\tdepending on the parameter `no_default`. If `no_default` is `False`, which is the default,\n\t`get_in` will `return` `default`. If `no_default` is `True`, `get_in` will `raise` an\n\t`Exception`.\n\n\tParameters\n\t----------\n\tkeys : Sequence[K]\n\t\t`Sequence` of keys that describes the path to traverse in `coll`.\n\tcoll : SupportsGetItem[K, V]\n\t\tPython `object` to traverse. `get_in` uses `operator.getitem`[1], so the nested objects in\n\t\t`coll` can be nested o any type that works with `operator.getitem`, such as a `dict` or\n\t\t`list`.\n\tdefault : V"" | None = None\n\t\tValue to return when the path in `keys` does not exist in `coll`.\n\tno_default : bool = False\n\t\tWhen `True`, `raise` `KeyError`, `IndexError`, or `TypeError` instead of returning `default`.\n\n\tReturns\n\t-------\n\tvalue : V | None\n\t\tThe value at the nested path in `coll`, or `default` if the path does not exist.\n\n\tRaises\n\t------\n\tKeyError\n\t\tWhen `no_default` is `True` and a key is missing from a mapping.\n\tIndexError\n\t\tWhen `no_default` is `True` and an index is out of range.\n\tTypeError\n\t\tWhen `no_default` is `True` and a key type is incompatible with `coll`.\n\n\tSee Also\n\t--------\n\titertoolz.get : Retrieve a value or values from a collection.\n\toperator.getitem : Return the value at a given key in a collection.\n\tassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\n\tupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\n\tExamples\n\t--------\n\t>>> transaction = {'name': 'Alice',\n\t... 'purchase': {'items': ['Apple', 'Orange'],\n\t... 'costs': [0.50, 1.25]},\n\t... 'credit card': '5555-1234-1234-1234'}\n\t>>> get_in(['purchase', 'items', 0], transaction)\n\t'Apple'\n\t>>> get_in(['name'], transaction)\n\t'Alice'\n\t>>> get_in(['purchase', 'total'], transaction)\n\t>>> get_in(['purchase', 'items', 'apple'], transaction)\n\t>>> get_in(['purchase', 'items', 10], transaction)\n\t>>> get_in(['purchase', 'total'], transaction, 0)\n\t0\n\t>>> get_in(['y'], {}, no_default=True)\n\tTraceback (most recent call last):\n\t\t...\n\tKeyError: 'y'\n\n\tReferences\n\t----------\n\t[1] Python `operator` module\n\t\thttps://docs.python.org/3/library/operator.html#operator.getitem\n\tget_in (line 893)humpy_cytoolz/dicttoolz.pyxisenableditemfilter (line 541)itemfilter(predicate: collections.abc.Callable[[tuple[K, V]], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping""[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `itemfilter` to select items from `d` (***d***ictionary) by both key and value\n\tsimultaneously. `itemfilter` calls `predicate` with each item yielded by `d.items()`. Each\n\titem is passed to `predicate` as a `tuple[K, V]`. `itemfilter` inserts each item for which\n\t`predicate` returns `True` into a new `MutableMapping`[1] created by `factory`. `itemfilter`\n\tdoes not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[tuple[K, V]], bool]\n\t\t`Callable` applied to each item of `d`. Each item is passed to `predicate` as a\n\t\t`tuple[K, V]`, and `predicate` must return `True` for the item to be retained.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `itemfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` for which\n\t\t`predicate` returns `True`.\n\n\tSee Also\n\t--------\n\tkeyfilter : Retain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\tvalfilter : Retain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\t>>> def isvalid(item):\n\t... k, v = item\n\t... return k % 2 == 0 and v < 4\n\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> itemfilter(isvalid, d)\n\t{2: 3}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\titemmap(func: collections.abc.Callable[[tuple[K, V]], tuple[L, W]], d: collections.abc.Mapping[K, V], factory: collections.abc.C""allable[[], collections.abc.MutableMapping[L, W]] = dict) -> collections.abc.MutableMapping[L, W]\n\n\tApply `func` to all items of `d` and return a new `Mapping` with the transformed items.\n\n\t(AI generated docstring)\n\n\tYou can use `itemmap` to transform all keys and values in `d` simultaneously without\n\tchanging `d`. `itemmap` applies `func` to each item yielded by `d.items()`. Each item\n\tis passed to `func` as a `tuple[K, V]`, and `func` must return a `tuple[L, W]`. `itemmap`\n\tinserts each returned `tuple` as a new key-value pair in a `MutableMapping`[1] created\n\tby `factory`.\n\n\tParameters\n\t----------\n\tfunc : Callable[[tuple[K, V]], tuple[L, W]]\n\t\t`Callable` applied to each item of `d`. Each item of `d` is passed to `func` as a\n\t\t`tuple[K, V]`, and `func` must return a `tuple[L, W]` containing the new key and value.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `itemmap` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[L, W]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[L, W]\n\t\tNew `MutableMapping` created by `factory` populated with each `tuple[L, W]` returned\n\t\tby `func`.\n\n\tSee Also\n\t--------\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> accountids = {'Alice': 10, 'Bob': 20}\n\t>>> itemmap(reversed, accountids) # doctest: +SKIP\n\t{10: 'Alice', 20: 'Bob'}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\titemmap (line 357)keyfilter (line 480)keyfilter(predicate: collections.abc.Callable[[K], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]""\n\n\tRetain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `keyfilter` to select items from `d` (***d***ictionary) by their keys. `keyfilter`\n\tcalls `predicate` with each key yielded by `d.keys()`. `keyfilter` inserts each item whose\n\tkey causes `predicate` to return `True` into a new `MutableMapping`[1] created by `factory`.\n\t`keyfilter` does not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[K], bool]\n\t\t`Callable` applied to each key of `d`. `keyfilter` keeps each item for which `predicate`\n\t\treturns `True`.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `keyfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` whose keys\n\t\tcause `predicate` to return `True`.\n\n\tSee Also\n\t--------\n\tvalfilter : Retain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\titemfilter : Retain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\n\t>>> iseven = lambda x: x % 2 == 0\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> keyfilter(iseven, d)\n\t{2: 3, 4: 5}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tkeymap(func: collections.abc.Callable[[K], L], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[L, V]] = dict) -> collections.abc.MutableMapping[L, V]\n\n\tApply `func` to all keys of `d` and return a new `Mapping` with the transformed keys.\n\n\t(AI generated docstring)\n\n\tYou can use `keymap` to transform al""l keys in `d` without changing `d`. `keymap` applies\n\t`func` to each key yielded by `d.keys()` and builds a new `MutableMapping`[1] created by\n\t`factory`, associating each transformed key with the corresponding original value of `d`.\n\n\tParameters\n\t----------\n\tfunc : Callable[[K], L]\n\t\t`Callable` applied to each key of `d`. Each key of `d` is passed to `func`\n\t\tindividually, and `func` returns the corresponding transformed key.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `keymap` reads all keys from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[L, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[L, V]\n\t\tNew `MutableMapping` created by `factory` in which each key from `d` is replaced by\n\t\tthe result of applying `func` to that key, associated with the original value of `d`.\n\n\tSee Also\n\t--------\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> bills = {'Alice': [20, 15, 30], 'Bob': [10, 35]}\n\t>>> keymap(str.lower, bills) # doctest: +SKIP\n\t{'alice': [20, 15, 30], 'bob': [10, 35]}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tkeymap (line 298)merge(*dicts: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\nMerge a collection of dictionaries and return a new `Mapping`.\n\n(AI generated docstring)\n\nYou can use `merge` to combine two or more `Mapping`[1] objects into a single new `Mapping`.\n`merge` calls `factory` to create the result, then updates it in order with each `Mapping` in\n`dicts`. When the same key appears in more than one element, the value from the later element""\ntakes precedence. You can also pass a single `Iterable[Mapping[K, V]]` as the sole positional\nargument instead of multiple `Mapping` arguments.\n\nParameters\n----------\n*dicts : Mapping[K, V]\n\t`Mapping` objects to merge. Alternatively, pass a single `Iterable[Mapping[K, V]]` as the\n\tsole positional argument.\nfactory : Callable[[], MutableMapping[K, V]] = dict\n\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\nReturns\n-------\nmappingMerged : MutableMapping[K, V]\n\tNew `MutableMapping` created by `factory` containing all key-value pairs from `dicts`. For\n\tduplicate keys, the value from the last `Mapping` in `dicts` that contains the key takes\n\tprecedence.\n\nSee Also\n--------\nmerge_with : Merge dictionaries and apply a `Callable` to combined values.\n\nExamples\n--------\n>>> merge({1: 'one'}, {2: 'two'})\n{1: 'one', 2: 'two'}\n\nLater dictionaries have precedence\n\n>>> merge({1: 2, 3: 4}, {3: 3, 4: 4})\n{1: 2, 3: 3, 4: 4}\n\nReferences\n----------\n[1] Python `collections.abc` module\n\thttps://docs.python.org/3/library/collections.abc.html\n\tmerge (line 98)merge_with(func: collections.abc.Callable[[list[V]], V], *dicts: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\nMerge dictionaries and apply a `Callable` to combined values.\n\n(AI generated docstring)\n\nYou can use `merge_with` to combine two or more `Mapping`[1] objects and resolve key conflicts\nby applying `func` to a `list` of all values associated with each key. For each key that\nappears in one or more elements of `dicts`, `merge_with` collects all associated values into a\n`list` in the order they appear across `dicts`, then calls `func` with that `list` to produce\nthe value in the result. You can also pass a single `Iterable[Mapping[K, V]]` as the sole\npositional argument after `func`.\n\nParameters\n----------\nfunc : Callable[[list[V]], V]\n\t`Callable` a""pplied to the `list` of values associated with each key across all `Mapping`\n\tobjects in `dicts`. `func` receives a non-empty `list` and must return the merged value for\n\tthat key.\n*dicts : Mapping[K, V]\n\t`Mapping` objects to merge. Alternatively, pass a single `Iterable[Mapping[K, V]]` as the\n\tsole positional argument after `func`.\nfactory : Callable[[], MutableMapping[K, V]] = dict\n\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\nReturns\n-------\nmappingMerged : MutableMapping[K, V]\n\tNew `MutableMapping` created by `factory` where each key maps to the result of calling\n\t`func` with all values associated with that key across `dicts`.\n\nSee Also\n--------\nmerge : Merge a collection of `Mapping` objects into a new `Mapping`.\n\nExamples\n--------\n>>> merge_with(sum, {1: 1, 2: 2}, {1: 10, 2: 20})\n{1: 11, 2: 22}\n\n>>> merge_with(first, {1: 1, 2: 2}, {2: 20, 3: 30}) # doctest: +SKIP\n{1: 1, 2: 2, 3: 30}\n\nReferences\n----------\n[1] Python `collections.abc` module\n\thttps://docs.python.org/3/library/collections.abc.html\n\tmerge_with (line 185)no default __reduce__ due to non-trivial __cinit__<stringsource>update_in(d: collections.abc.Mapping[K, V], keys: collections.abc.Sequence[K], func: collections.abc.Callable[[V], V], default: V | None = None, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tApply a `Callable` to a value at a nested path in a `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `update_in` to produce a copy of `d` with the value at the nested path\n\tspecified by `keys` replaced by the result of calling `func` on the current value.\n\t`update_in` creates intermediate `MutableMapping` instances as needed when a key in\n\t`keys` is absent from `d`. If the innermost key is absent, `func` receives `default`\n\tinstead of an existing value. `update_in` does not mutate `d` or any nested `Mapping`\n\twithin `d`.\n\n\tParameters""\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkeys : Sequence[K]\n\t\tNon-empty sequence of keys specifying the nested path to the value to update in `d`.\n\tfunc : Callable[[V], V]\n\t\t`Callable` applied to the current value at the path in `keys`. If the innermost\n\t\tkey is absent from `d`, `func` receives `default`.\n\tdefault : V | None = None\n\t\tValue passed to `func` when the innermost key is absent from `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates each new `MutableMapping`[1] in the result.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `MutableMapping` based on `d` with the value at the path specified by `keys`\n\t\treplaced by the result of `func`.\n\n\tSee Also\n\t--------\n\tassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\n\tget_in : Retrieve a value at a nested path in a `Mapping`.\n\tassoc : Create a new `Mapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> inc = lambda x: x + 1\n\t>>> update_in({'a': 0}, ['a'], inc)\n\t{'a': 1}\n\n\t>>> update_in({}, ['z'], inc, 0)\n\t{'z': 1}\n\n\t>>> update_in({}, [1, 2, 3], str, default=\"bar\")\n\t{1: {2: {3: 'bar'}}}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tupdate_in (line 802)valfilter (line 419)valfilter(predicate: collections.abc.Callable[[V], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `valfilter` to select items from `d` (***d***ictionary) by their values. `valfilter`\n\tcalls `predicate` with each value yielded by `d.values()`. `valfilter` inserts each item whose\n\tvalue causes `predicate` to return `True` into a ""new `MutableMapping`[1] created by `factory`.\n\t`valfilter` does not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[V], bool]\n\t\t`Callable` applied to each value of `d`. `valfilter` keeps each item for which `predicate`\n\t\treturns `True`.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `valfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` whose values\n\t\tcause `predicate` to return `True`.\n\n\tSee Also\n\t--------\n\tkeyfilter : Retain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\titemfilter : Retain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\n\t>>> iseven = lambda x: x % 2 == 0\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> valfilter(iseven, d)\n\t{1: 2, 3: 4}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tvalmap(func: collections.abc.Callable[[V], W], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, W]] = dict) -> collections.abc.MutableMapping[K, W]\n\n\tApply `func` to all values of `d` and return a new `Mapping` with the transformed values.\n\n\t(AI generated docstring)\n\n\tYou can use `valmap` to transform all values in `d` without changing `d`. `valmap` applies\n\t`func` to each value yielded by `d.values()` and builds a new `MutableMapping`[1] created\n\tby `factory`, preserving each original key associated with its transformed value.\n\n\tParameters\n\t----------\n\tfunc : Callable[[V], W]\n\t\t`Callable` applied to each value of `d`. Each value of `d` is p""assed to `func`\n\t\tindividually, and `func` returns the corresponding transformed value.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `valmap` reads all values from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, W]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[K, W]\n\t\tNew `MutableMapping` created by `factory` in which each key from `d` is associated\n\t\twith the result of applying `func` to the corresponding value of `d`.\n\n\tSee Also\n\t--------\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> bills = {'Alice': [20, 15, 30], 'Bob': [10, 35]}\n\t>>> valmap(sum, bills) # doctest: +SKIP\n\t{'Alice': 65, 'Bob': 45}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tvalmap (line 239)Mapping__Pyx_PyDict_NextRefabc__all__assocassoc_inasyncio.coroutines__class_getitem__cline_in_tracebackcollcollectionsddefaultdictsdifference_updatedissocfactoryformatfunc__func__get_in__getstate__humpy_cytoolz.dicttoolz_is_coroutineititemfilteritemmapitems_iter_mapping_iter_mapping.__reduce_cython___iter_mapping.__setstate_cython__keykeyfilterkeymapkeyskwargs__main__mergemerge_with__module____name__nextno_defaultpoppopitempredicate__pyx_capi____pyx_state__qualname____reduce____reduce_cython____reduce_ex__self__set_name__setdefault__setstate____setstate_cython____test__updateupdate_invalfiltervalmapvaluevaluesPyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_assoc *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_assoc_in *__pyx_optional_args)\000PyObject *(PyObject *,"" PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_update_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_get_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_itemfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_itemmap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_keyfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_keymap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_valfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_valmap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_dissoc *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_merge_with *__pyx_optional_args)\000PyObject *(PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_merge *__pyx_optional_args)\000__pyx_t_13humpy_cytoolz_9dicttoolz_f_map_next (PyObject *, PyObject **)\000int (PyObject *, Py_ssize_t *, PyObject **, PyObject **)\000assoc\000assoc_in\000update_in\000get_in\000itemfilter\000itemmap\000keyfilter\000keymap\000valfilter\000valmap\000c_dissoc\000c_merge_with\000c_merge\000get_map_iter\000PyMapping_Next\320\000;\2701\360f\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230""\021\230!\330\002\005\200T\210\024\210R\210x\220v\230X\240Q\330\002\004\200A\200U\210!\330\001\010\210\001\320\000B\300!\360d\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\005\200Y\210a\210x\220q\330\003\005\200Q\200h\210h\220h\230a\330\001\010\210\001\320\000C\3001\360l\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\006\200h\210a\330\002\006\200h\210a\330\002\005\200Y\210b\220\003\2201\330\003\005\200Q\200e\2101\330\001\010\210\001\320\000\032\230!\360`\001\000\002\005\200C\200q\210\007\210s\220\"\220D\230\004\230J\240a\240u\250A\250T\260\021\330\002\n\210%\210q\220\001\330\001\010\210\007\210q\220\007\220q\320\000F\300a\360N\001\000\002\007\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\003\2001\200G\2101\330\001\010\210\001\320\000J\320J_\320_`\360v\001\000\002\013\210'\220\024\220Q\220d\230$\230a\230q\330\001\006\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\t\210\021\340\001\005\200W\210A\330\002\005\200X\210S\220\001\330\003\007\200q\210\001\210\021\330\003\013\2107\220!\330\003\006\320\006\027\220q\230\001\330\004\021\220\021\220'\230\021\340\004\t\210\027\220\001\220\021\340\003\007\200w\210a\330\003\013\2101\330\002\007\200q\210\013\2201\330\002\014\210A\330\002\n\210!\340\001\004\200H\210C\210q\330\002\010\210\004\210A\210Q\210a\210q\340\002\010\210\004\210A\210Q\330\001\006\200a\200{\220!\330\001\010\210\001\320\000J\310!\360d\001\000\002\013\210'\220\024\220Q\220d\230$\230a\230q\330\001\006\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\t\210\021\340\001\005\200W\210A""\330\002\005\200X\210S\220\001\330\003\007\200q\210\001\210\021\330\003\013\2107\220!\330\003\006\320\006\027\220q\230\001\330\004\021\220\021\220'\230\021\340\004\t\210\027\220\001\220\021\340\003\007\200w\210a\330\003\013\2101\330\002\007\200q\210\013\2201\330\002\014\210A\330\002\n\210!\340\001\006\200a\200{\220!\330\001\010\210\001\200\001\330\004\n\210+\220Q\320\000%\240Q\360d\001\000\002\005\200C\200q\210\007\210s\220\"\220D\230\004\230J\240a\240u\250A\250T\260\021\330\002\n\210%\210q\220\001\330\001\010\210\014\220A\220V\2307\240!\320\000=\320=U\320UV\360T\002\000\002\003\330\002\006\200h\210a\330\003\n\210$\210a\210q\330\002\t\210\021\330\010\t\330\002\005\200Q\330\003\004\330\002\t\210\021\320\000:\270!\360b\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\004\200A\200T\210\021\210(\220)\2308\2401\330\001\010\210\001\320\000:\270!\360b\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\004\200A\200X\210X\220T\230\021\230(\240!\330\001\010\210\001\200\001\360j\001\000\002\t\210\010\220\001\220\023\220F\230+\240Q\240j\260\001";
11232
11232
  PyObject *data = NULL;
11233
11233
  CYTHON_UNUSED_VAR(__Pyx_DecompressString);
11234
11234
  #endif
@@ -895,27 +895,27 @@ cpdef object get_in(object keys, object coll, object default=None, object no_def
895
895
 
896
896
  Retrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.
897
897
 
898
- (AI generated docstring)
899
-
900
898
  You can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a
901
- sequence of `keys`. `get_in` applies each key in `keys` sequentially using
902
- `operator.getitem`[1]. If the path does not exist, `get_in` returns `default`. If
903
- `no_default` is `True`, `get_in` re-raises the original exception instead of returning
904
- `default`.
899
+ `Sequence` of `keys`. `get_in` applies each key in `keys` sequentially using
900
+ `operator.getitem`[1].
901
+
902
+ If the desired key does not exist, `get_in` will `raise` an `Exception` or `return` `default`
903
+ depending on the parameter `no_default`. If `no_default` is `False`, which is the default,
904
+ `get_in` will `return` `default`. If `no_default` is `True`, `get_in` will `raise` an
905
+ `Exception`.
905
906
 
906
907
  Parameters
907
908
  ----------
908
909
  keys : Sequence[K]
909
- Sequence of keys that describes the path to traverse in `coll`.
910
+ `Sequence` of keys that describes the path to traverse in `coll`.
910
911
  coll : SupportsGetItem[K, V]
911
- Collection to traverse. `get_in` applies each key in `keys` to the current `coll`
912
- using `operator.getitem`[1], so `coll` can be any nested structure such as a `dict`
913
- or `list`.
912
+ Python `object` to traverse. `get_in` uses `operator.getitem`[1], so the nested objects in
913
+ `coll` can be nested o any type that works with `operator.getitem`, such as a `dict` or
914
+ `list`.
914
915
  default : V | None = None
915
916
  Value to return when the path in `keys` does not exist in `coll`.
916
917
  no_default : bool = False
917
- When `True`, re-raise the original `KeyError`, `IndexError`, or `TypeError`
918
- instead of returning `default`.
918
+ When `True`, `raise` `KeyError`, `IndexError`, or `TypeError` instead of returning `default`.
919
919
 
920
920
  Returns
921
921
  -------
@@ -10,6 +10,26 @@ def countby[V](key: Any, seq: Iterable[Sequence[V] | Mapping[Any, V]]) -> dict[V
10
10
  def countby[T, K, V]( key: Callable[[T], K] | Any, seq: Iterable[T] | Iterable[Sequence[V] | Mapping[Any, V]] ) -> dict[K, int] | dict[V, int]: ...
11
11
 
12
12
  class partitionby[T](Iterator[tuple[T, ...]]):
13
+ """Partition a sequence according to a function
14
+
15
+ Partition `s` into a sequence of lists such that, when traversing
16
+ `s`, every time the output of `func` changes a new list is started
17
+ and that and subsequent items are collected into that list.
18
+
19
+ >>> is_space = lambda c: c == " "
20
+ >>> list(partitionby(is_space, "I have space"))
21
+ [('I',), (' ',), ('h', 'a', 'v', 'e'), (' ',), ('s', 'p', 'a', 'c', 'e')]
22
+
23
+ >>> is_large = lambda x: x > 10
24
+ >>> list(partitionby(is_large, [1, 2, 1, 99, 88, 33, 99, -1, 5]))
25
+ [(1, 2, 1), (99, 88, 33, 99), (-1, 5)]
26
+
27
+ See Also
28
+ --------
29
+ partition
30
+ groupby
31
+ itertools.groupby
32
+ """
13
33
  def __init__(self, func: Callable[[T], Any], seq: Iterable[T]) -> None: ...
14
34
  def __iter__(self) -> partitionby[T]: ...
15
35
  def __next__(self) -> tuple[T, ...]: ...