mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	bpo-38605: Revert making 'from __future__ import annotations' the default (GH-25490)
This reverts commits044a1048caand1be456ae9d, adapting the code to changes that happened after it.
This commit is contained in:
		
							parent
							
								
									d35eef3b90
								
							
						
					
					
						commit
						b0544ba77c
					
				
					 32 changed files with 436 additions and 523 deletions
				
			
		| 
						 | 
					@ -1244,9 +1244,13 @@ following the parameter name.  Any parameter may have an annotation, even those
 | 
				
			||||||
``*identifier`` or ``**identifier``.  Functions may have "return" annotation of
 | 
					``*identifier`` or ``**identifier``.  Functions may have "return" annotation of
 | 
				
			||||||
the form "``-> expression``" after the parameter list.  These annotations can be
 | 
					the form "``-> expression``" after the parameter list.  These annotations can be
 | 
				
			||||||
any valid Python expression.  The presence of annotations does not change the
 | 
					any valid Python expression.  The presence of annotations does not change the
 | 
				
			||||||
semantics of a function.  The annotation values are available as string values
 | 
					semantics of a function.  The annotation values are available as values of
 | 
				
			||||||
in a dictionary keyed by the parameters' names in the :attr:`__annotations__`
 | 
					a dictionary keyed by the parameters' names in the :attr:`__annotations__`
 | 
				
			||||||
attribute of the function object.
 | 
					attribute of the function object.  If the ``annotations`` import from
 | 
				
			||||||
 | 
					:mod:`__future__` is used, annotations are preserved as strings at runtime which
 | 
				
			||||||
 | 
					enables postponed evaluation.  Otherwise, they are evaluated when the function
 | 
				
			||||||
 | 
					definition is executed.  In this case annotations may be evaluated in
 | 
				
			||||||
 | 
					a different order than they appear in the source code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. index:: pair: lambda; expression
 | 
					.. index:: pair: lambda; expression
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -877,11 +877,14 @@ can appear before a future statement are:
 | 
				
			||||||
* blank lines, and
 | 
					* blank lines, and
 | 
				
			||||||
* other future statements.
 | 
					* other future statements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The only feature that requires using the future statement is
 | 
				
			||||||
 | 
					``annotations`` (see :pep:`563`).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
All historical features enabled by the future statement are still recognized
 | 
					All historical features enabled by the future statement are still recognized
 | 
				
			||||||
by Python 3.  The list includes ``absolute_import``, ``division``,
 | 
					by Python 3.  The list includes ``absolute_import``, ``division``,
 | 
				
			||||||
``generators``, ``generator_stop``, ``unicode_literals``,
 | 
					``generators``, ``generator_stop``, ``unicode_literals``,
 | 
				
			||||||
``print_function``, ``nested_scopes``, ``with_statement`` and ``annotations``.
 | 
					``print_function``, ``nested_scopes`` and ``with_statement``.  They are
 | 
				
			||||||
They are all redundant because they are always enabled, and only kept for
 | 
					all redundant because they are always enabled, and only kept for
 | 
				
			||||||
backwards compatibility.
 | 
					backwards compatibility.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A future statement is recognized and treated specially at compile time: Changes
 | 
					A future statement is recognized and treated specially at compile time: Changes
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -624,22 +624,6 @@ This section covers major changes affecting :pep:`484` type annotations and
 | 
				
			||||||
the :mod:`typing` module.
 | 
					the :mod:`typing` module.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PEP 563: Postponed Evaluation of Annotations Becomes Default
 | 
					 | 
				
			||||||
------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
In Python 3.7, postponed evaluation of annotations was added,
 | 
					 | 
				
			||||||
to be enabled with a ``from __future__ import annotations``
 | 
					 | 
				
			||||||
directive.  In 3.10 this became the default behavior, even
 | 
					 | 
				
			||||||
without that future directive.  With this being default, all
 | 
					 | 
				
			||||||
annotations stored in :attr:`__annotations__` will be strings.
 | 
					 | 
				
			||||||
If needed, annotations can be resolved at runtime using
 | 
					 | 
				
			||||||
:func:`typing.get_type_hints`.  See :pep:`563` for a full
 | 
					 | 
				
			||||||
description.  Also, the :func:`inspect.signature` will try to
 | 
					 | 
				
			||||||
resolve types from now on, and when it fails it will fall back to
 | 
					 | 
				
			||||||
showing the string annotations.  (Contributed by Batuhan Taskaya
 | 
					 | 
				
			||||||
in :issue:`38605`.)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
PEP 604: New Type Union Operator
 | 
					PEP 604: New Type Union Operator
 | 
				
			||||||
--------------------------------
 | 
					--------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -413,10 +413,8 @@ def _create_fn(name, args, body, *, globals=None, locals=None,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ns = {}
 | 
					    ns = {}
 | 
				
			||||||
    exec(txt, globals, ns)
 | 
					    exec(txt, globals, ns)
 | 
				
			||||||
    func = ns['__create_fn__'](**locals)
 | 
					    return ns['__create_fn__'](**locals)
 | 
				
			||||||
    for arg, annotation in func.__annotations__.copy().items():
 | 
					
 | 
				
			||||||
        func.__annotations__[arg] = locals[annotation]
 | 
					 | 
				
			||||||
    return func
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def _field_assign(frozen, name, value, self_name):
 | 
					def _field_assign(frozen, name, value, self_name):
 | 
				
			||||||
    # If we're a frozen class, then assign to our fields in __init__
 | 
					    # If we're a frozen class, then assign to our fields in __init__
 | 
				
			||||||
| 
						 | 
					@ -667,11 +665,6 @@ def _is_type(annotation, cls, a_module, a_type, is_type_predicate):
 | 
				
			||||||
    # a eval() penalty for every single field of every dataclass
 | 
					    # a eval() penalty for every single field of every dataclass
 | 
				
			||||||
    # that's defined.  It was judged not worth it.
 | 
					    # that's defined.  It was judged not worth it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Strip away the extra quotes as a result of double-stringifying when the
 | 
					 | 
				
			||||||
    # 'annotations' feature became default.
 | 
					 | 
				
			||||||
    if annotation.startswith(("'", '"')) and annotation.endswith(("'", '"')):
 | 
					 | 
				
			||||||
        annotation = annotation[1:-1]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    match = _MODULE_IDENTIFIER_RE.match(annotation)
 | 
					    match = _MODULE_IDENTIFIER_RE.match(annotation)
 | 
				
			||||||
    if match:
 | 
					    if match:
 | 
				
			||||||
        ns = None
 | 
					        ns = None
 | 
				
			||||||
| 
						 | 
					@ -1020,7 +1013,7 @@ def _process_class(cls, init, repr, eq, order, unsafe_hash, frozen,
 | 
				
			||||||
    if not getattr(cls, '__doc__'):
 | 
					    if not getattr(cls, '__doc__'):
 | 
				
			||||||
        # Create a class doc-string.
 | 
					        # Create a class doc-string.
 | 
				
			||||||
        cls.__doc__ = (cls.__name__ +
 | 
					        cls.__doc__ = (cls.__name__ +
 | 
				
			||||||
                       str(inspect.signature(cls)).replace(' -> NoneType', ''))
 | 
					                       str(inspect.signature(cls)).replace(' -> None', ''))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if match_args:
 | 
					    if match_args:
 | 
				
			||||||
        _set_new_attribute(cls, '__match_args__',
 | 
					        _set_new_attribute(cls, '__match_args__',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -349,6 +349,7 @@ def _write_atomic(path, data, mode=0o666):
 | 
				
			||||||
#     Python 3.10a6 3434 (PEP 634: Structural Pattern Matching)
 | 
					#     Python 3.10a6 3434 (PEP 634: Structural Pattern Matching)
 | 
				
			||||||
#     Python 3.10a7 3435 Use instruction offsets (as opposed to byte offsets).
 | 
					#     Python 3.10a7 3435 Use instruction offsets (as opposed to byte offsets).
 | 
				
			||||||
#     Python 3.10b1 3436 (Add GEN_START bytecode #43683)
 | 
					#     Python 3.10b1 3436 (Add GEN_START bytecode #43683)
 | 
				
			||||||
 | 
					#     Python 3.10b1 3437 (Undo making 'annotations' future by default - We like to dance among core devs!)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# MAGIC must change whenever the bytecode emitted by the compiler may no
 | 
					# MAGIC must change whenever the bytecode emitted by the compiler may no
 | 
				
			||||||
| 
						 | 
					@ -358,7 +359,7 @@ def _write_atomic(path, data, mode=0o666):
 | 
				
			||||||
# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
 | 
					# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
 | 
				
			||||||
# in PC/launcher.c must also be updated.
 | 
					# in PC/launcher.c must also be updated.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MAGIC_NUMBER = (3436).to_bytes(2, 'little') + b'\r\n'
 | 
					MAGIC_NUMBER = (3437).to_bytes(2, 'little') + b'\r\n'
 | 
				
			||||||
_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little')  # For import.c
 | 
					_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little')  # For import.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_PYCACHE = '__pycache__'
 | 
					_PYCACHE = '__pycache__'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,6 @@
 | 
				
			||||||
import tokenize
 | 
					import tokenize
 | 
				
			||||||
import token
 | 
					import token
 | 
				
			||||||
import types
 | 
					import types
 | 
				
			||||||
import typing
 | 
					 | 
				
			||||||
import warnings
 | 
					import warnings
 | 
				
			||||||
import functools
 | 
					import functools
 | 
				
			||||||
import builtins
 | 
					import builtins
 | 
				
			||||||
| 
						 | 
					@ -1893,10 +1892,7 @@ def _signature_is_functionlike(obj):
 | 
				
			||||||
    code = getattr(obj, '__code__', None)
 | 
					    code = getattr(obj, '__code__', None)
 | 
				
			||||||
    defaults = getattr(obj, '__defaults__', _void) # Important to use _void ...
 | 
					    defaults = getattr(obj, '__defaults__', _void) # Important to use _void ...
 | 
				
			||||||
    kwdefaults = getattr(obj, '__kwdefaults__', _void) # ... and not None here
 | 
					    kwdefaults = getattr(obj, '__kwdefaults__', _void) # ... and not None here
 | 
				
			||||||
    try:
 | 
					    annotations = getattr(obj, '__annotations__', None)
 | 
				
			||||||
        annotations = _get_type_hints(obj)
 | 
					 | 
				
			||||||
    except AttributeError:
 | 
					 | 
				
			||||||
        annotations = None
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (isinstance(code, types.CodeType) and
 | 
					    return (isinstance(code, types.CodeType) and
 | 
				
			||||||
            isinstance(name, str) and
 | 
					            isinstance(name, str) and
 | 
				
			||||||
| 
						 | 
					@ -2137,16 +2133,6 @@ def p(name_node, default_node, default=empty):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return cls(parameters, return_annotation=cls.empty)
 | 
					    return cls(parameters, return_annotation=cls.empty)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def _get_type_hints(func, **kwargs):
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        return typing.get_type_hints(func, **kwargs)
 | 
					 | 
				
			||||||
    except Exception:
 | 
					 | 
				
			||||||
        # First, try to use the get_type_hints to resolve
 | 
					 | 
				
			||||||
        # annotations. But for keeping the behavior intact
 | 
					 | 
				
			||||||
        # if there was a problem with that (like the namespace
 | 
					 | 
				
			||||||
        # can't resolve some annotation) continue to use
 | 
					 | 
				
			||||||
        # string annotations
 | 
					 | 
				
			||||||
        return func.__annotations__
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def _signature_from_builtin(cls, func, skip_bound_arg=True):
 | 
					def _signature_from_builtin(cls, func, skip_bound_arg=True):
 | 
				
			||||||
    """Private helper function to get signature for
 | 
					    """Private helper function to get signature for
 | 
				
			||||||
| 
						 | 
					@ -2191,8 +2177,7 @@ def _signature_from_function(cls, func, skip_bound_arg=True,
 | 
				
			||||||
    positional = arg_names[:pos_count]
 | 
					    positional = arg_names[:pos_count]
 | 
				
			||||||
    keyword_only_count = func_code.co_kwonlyargcount
 | 
					    keyword_only_count = func_code.co_kwonlyargcount
 | 
				
			||||||
    keyword_only = arg_names[pos_count:pos_count + keyword_only_count]
 | 
					    keyword_only = arg_names[pos_count:pos_count + keyword_only_count]
 | 
				
			||||||
    annotations = _get_type_hints(func, globalns=globalns, localns=localns)
 | 
					    annotations = func.__annotations__
 | 
				
			||||||
 | 
					 | 
				
			||||||
    defaults = func.__defaults__
 | 
					    defaults = func.__defaults__
 | 
				
			||||||
    kwdefaults = func.__kwdefaults__
 | 
					    kwdefaults = func.__kwdefaults__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,9 @@
 | 
				
			||||||
 | 
					#from __future__ import annotations
 | 
				
			||||||
 | 
					USING_STRINGS = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# dataclass_module_1.py and dataclass_module_1_str.py are identical
 | 
				
			||||||
 | 
					# except only the latter uses string annotations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import dataclasses
 | 
					import dataclasses
 | 
				
			||||||
import typing
 | 
					import typing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								Lib/test/dataclass_module_1_str.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								Lib/test/dataclass_module_1_str.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					from __future__ import annotations
 | 
				
			||||||
 | 
					USING_STRINGS = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# dataclass_module_1.py and dataclass_module_1_str.py are identical
 | 
				
			||||||
 | 
					# except only the latter uses string annotations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import dataclasses
 | 
				
			||||||
 | 
					import typing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					T_CV2 = typing.ClassVar[int]
 | 
				
			||||||
 | 
					T_CV3 = typing.ClassVar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					T_IV2 = dataclasses.InitVar[int]
 | 
				
			||||||
 | 
					T_IV3 = dataclasses.InitVar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@dataclasses.dataclass
 | 
				
			||||||
 | 
					class CV:
 | 
				
			||||||
 | 
					    T_CV4 = typing.ClassVar
 | 
				
			||||||
 | 
					    cv0: typing.ClassVar[int] = 20
 | 
				
			||||||
 | 
					    cv1: typing.ClassVar = 30
 | 
				
			||||||
 | 
					    cv2: T_CV2
 | 
				
			||||||
 | 
					    cv3: T_CV3
 | 
				
			||||||
 | 
					    not_cv4: T_CV4  # When using string annotations, this field is not recognized as a ClassVar.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@dataclasses.dataclass
 | 
				
			||||||
 | 
					class IV:
 | 
				
			||||||
 | 
					    T_IV4 = dataclasses.InitVar
 | 
				
			||||||
 | 
					    iv0: dataclasses.InitVar[int]
 | 
				
			||||||
 | 
					    iv1: dataclasses.InitVar
 | 
				
			||||||
 | 
					    iv2: T_IV2
 | 
				
			||||||
 | 
					    iv3: T_IV3
 | 
				
			||||||
 | 
					    not_iv4: T_IV4  # When using string annotations, this field is not recognized as an InitVar.
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,9 @@
 | 
				
			||||||
 | 
					#from __future__ import annotations
 | 
				
			||||||
 | 
					USING_STRINGS = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# dataclass_module_2.py and dataclass_module_2_str.py are identical
 | 
				
			||||||
 | 
					# except only the latter uses string annotations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from dataclasses import dataclass, InitVar
 | 
					from dataclasses import dataclass, InitVar
 | 
				
			||||||
from typing import ClassVar
 | 
					from typing import ClassVar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								Lib/test/dataclass_module_2_str.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								Lib/test/dataclass_module_2_str.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					from __future__ import annotations
 | 
				
			||||||
 | 
					USING_STRINGS = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# dataclass_module_2.py and dataclass_module_2_str.py are identical
 | 
				
			||||||
 | 
					# except only the latter uses string annotations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from dataclasses import dataclass, InitVar
 | 
				
			||||||
 | 
					from typing import ClassVar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					T_CV2 = ClassVar[int]
 | 
				
			||||||
 | 
					T_CV3 = ClassVar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					T_IV2 = InitVar[int]
 | 
				
			||||||
 | 
					T_IV3 = InitVar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@dataclass
 | 
				
			||||||
 | 
					class CV:
 | 
				
			||||||
 | 
					    T_CV4 = ClassVar
 | 
				
			||||||
 | 
					    cv0: ClassVar[int] = 20
 | 
				
			||||||
 | 
					    cv1: ClassVar = 30
 | 
				
			||||||
 | 
					    cv2: T_CV2
 | 
				
			||||||
 | 
					    cv3: T_CV3
 | 
				
			||||||
 | 
					    not_cv4: T_CV4  # When using string annotations, this field is not recognized as a ClassVar.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@dataclass
 | 
				
			||||||
 | 
					class IV:
 | 
				
			||||||
 | 
					    T_IV4 = InitVar
 | 
				
			||||||
 | 
					    iv0: InitVar[int]
 | 
				
			||||||
 | 
					    iv1: InitVar
 | 
				
			||||||
 | 
					    iv2: T_IV2
 | 
				
			||||||
 | 
					    iv3: T_IV3
 | 
				
			||||||
 | 
					    not_iv4: T_IV4  # When using string annotations, this field is not recognized as an InitVar.
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					from __future__ import annotations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import dataclasses
 | 
					import dataclasses
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,228 +0,0 @@
 | 
				
			||||||
import unittest
 | 
					 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
from textwrap import dedent
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class PostponedAnnotationsTestCase(unittest.TestCase):
 | 
					 | 
				
			||||||
    template = dedent(
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        def f() -> {ann}:
 | 
					 | 
				
			||||||
            ...
 | 
					 | 
				
			||||||
        def g(arg: {ann}) -> None:
 | 
					 | 
				
			||||||
            ...
 | 
					 | 
				
			||||||
        async def f2() -> {ann}:
 | 
					 | 
				
			||||||
            ...
 | 
					 | 
				
			||||||
        async def g2(arg: {ann}) -> None:
 | 
					 | 
				
			||||||
            ...
 | 
					 | 
				
			||||||
        var: {ann}
 | 
					 | 
				
			||||||
        var2: {ann} = None
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def getActual(self, annotation):
 | 
					 | 
				
			||||||
        scope = {}
 | 
					 | 
				
			||||||
        exec(self.template.format(ann=annotation), {}, scope)
 | 
					 | 
				
			||||||
        func_ret_ann = scope['f'].__annotations__['return']
 | 
					 | 
				
			||||||
        func_arg_ann = scope['g'].__annotations__['arg']
 | 
					 | 
				
			||||||
        async_func_ret_ann = scope['f2'].__annotations__['return']
 | 
					 | 
				
			||||||
        async_func_arg_ann = scope['g2'].__annotations__['arg']
 | 
					 | 
				
			||||||
        var_ann1 = scope['__annotations__']['var']
 | 
					 | 
				
			||||||
        var_ann2 = scope['__annotations__']['var2']
 | 
					 | 
				
			||||||
        self.assertEqual(func_ret_ann, func_arg_ann)
 | 
					 | 
				
			||||||
        self.assertEqual(func_ret_ann, async_func_ret_ann)
 | 
					 | 
				
			||||||
        self.assertEqual(func_ret_ann, async_func_arg_ann)
 | 
					 | 
				
			||||||
        self.assertEqual(func_ret_ann, var_ann1)
 | 
					 | 
				
			||||||
        self.assertEqual(func_ret_ann, var_ann2)
 | 
					 | 
				
			||||||
        return func_ret_ann
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def assertAnnotationEqual(
 | 
					 | 
				
			||||||
        self, annotation, expected=None, drop_parens=False, is_tuple=False,
 | 
					 | 
				
			||||||
    ):
 | 
					 | 
				
			||||||
        actual = self.getActual(annotation)
 | 
					 | 
				
			||||||
        if expected is None:
 | 
					 | 
				
			||||||
            expected = annotation if not is_tuple else annotation[1:-1]
 | 
					 | 
				
			||||||
        if drop_parens:
 | 
					 | 
				
			||||||
            self.assertNotEqual(actual, expected)
 | 
					 | 
				
			||||||
            actual = actual.replace("(", "").replace(")", "")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.assertEqual(actual, expected)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_annotations(self):
 | 
					 | 
				
			||||||
        eq = self.assertAnnotationEqual
 | 
					 | 
				
			||||||
        eq('...')
 | 
					 | 
				
			||||||
        eq("'some_string'")
 | 
					 | 
				
			||||||
        eq("u'some_string'")
 | 
					 | 
				
			||||||
        eq("b'\\xa3'")
 | 
					 | 
				
			||||||
        eq('Name')
 | 
					 | 
				
			||||||
        eq('None')
 | 
					 | 
				
			||||||
        eq('True')
 | 
					 | 
				
			||||||
        eq('False')
 | 
					 | 
				
			||||||
        eq('1')
 | 
					 | 
				
			||||||
        eq('1.0')
 | 
					 | 
				
			||||||
        eq('1j')
 | 
					 | 
				
			||||||
        eq('True or False')
 | 
					 | 
				
			||||||
        eq('True or False or None')
 | 
					 | 
				
			||||||
        eq('True and False')
 | 
					 | 
				
			||||||
        eq('True and False and None')
 | 
					 | 
				
			||||||
        eq('Name1 and Name2 or Name3')
 | 
					 | 
				
			||||||
        eq('Name1 and (Name2 or Name3)')
 | 
					 | 
				
			||||||
        eq('Name1 or Name2 and Name3')
 | 
					 | 
				
			||||||
        eq('(Name1 or Name2) and Name3')
 | 
					 | 
				
			||||||
        eq('Name1 and Name2 or Name3 and Name4')
 | 
					 | 
				
			||||||
        eq('Name1 or Name2 and Name3 or Name4')
 | 
					 | 
				
			||||||
        eq('a + b + (c + d)')
 | 
					 | 
				
			||||||
        eq('a * b * (c * d)')
 | 
					 | 
				
			||||||
        eq('(a ** b) ** c ** d')
 | 
					 | 
				
			||||||
        eq('v1 << 2')
 | 
					 | 
				
			||||||
        eq('1 >> v2')
 | 
					 | 
				
			||||||
        eq('1 % finished')
 | 
					 | 
				
			||||||
        eq('1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8')
 | 
					 | 
				
			||||||
        eq('not great')
 | 
					 | 
				
			||||||
        eq('not not great')
 | 
					 | 
				
			||||||
        eq('~great')
 | 
					 | 
				
			||||||
        eq('+value')
 | 
					 | 
				
			||||||
        eq('++value')
 | 
					 | 
				
			||||||
        eq('-1')
 | 
					 | 
				
			||||||
        eq('~int and not v1 ^ 123 + v2 | True')
 | 
					 | 
				
			||||||
        eq('a + (not b)')
 | 
					 | 
				
			||||||
        eq('lambda: None')
 | 
					 | 
				
			||||||
        eq('lambda arg: None')
 | 
					 | 
				
			||||||
        eq('lambda a=True: a')
 | 
					 | 
				
			||||||
        eq('lambda a, b, c=True: a')
 | 
					 | 
				
			||||||
        eq("lambda a, b, c=True, *, d=1 << v2, e='str': a")
 | 
					 | 
				
			||||||
        eq("lambda a, b, c=True, *vararg, d, e='str', **kwargs: a + b")
 | 
					 | 
				
			||||||
        eq("lambda a, /, b, c=True, *vararg, d, e='str', **kwargs: a + b")
 | 
					 | 
				
			||||||
        eq('lambda x, /: x')
 | 
					 | 
				
			||||||
        eq('lambda x=1, /: x')
 | 
					 | 
				
			||||||
        eq('lambda x, /, y: x + y')
 | 
					 | 
				
			||||||
        eq('lambda x=1, /, y=2: x + y')
 | 
					 | 
				
			||||||
        eq('lambda x, /, y=1: x + y')
 | 
					 | 
				
			||||||
        eq('lambda x, /, y=1, *, z=3: x + y + z')
 | 
					 | 
				
			||||||
        eq('lambda x=1, /, y=2, *, z=3: x + y + z')
 | 
					 | 
				
			||||||
        eq('lambda x=1, /, y=2, *, z: x + y + z')
 | 
					 | 
				
			||||||
        eq('lambda x=1, y=2, z=3, /, w=4, *, l, l2: x + y + z + w + l + l2')
 | 
					 | 
				
			||||||
        eq('lambda x=1, y=2, z=3, /, w=4, *, l, l2, **kwargs: x + y + z + w + l + l2')
 | 
					 | 
				
			||||||
        eq('lambda x, /, y=1, *, z: x + y + z')
 | 
					 | 
				
			||||||
        eq('lambda x: lambda y: x + y')
 | 
					 | 
				
			||||||
        eq('1 if True else 2')
 | 
					 | 
				
			||||||
        eq('str or None if int or True else str or bytes or None')
 | 
					 | 
				
			||||||
        eq('str or None if (1 if True else 2) else str or bytes or None')
 | 
					 | 
				
			||||||
        eq("0 if not x else 1 if x > 0 else -1")
 | 
					 | 
				
			||||||
        eq("(1 if x > 0 else -1) if x else 0")
 | 
					 | 
				
			||||||
        eq("{'2.7': dead, '3.7': long_live or die_hard}")
 | 
					 | 
				
			||||||
        eq("{'2.7': dead, '3.7': long_live or die_hard, **{'3.6': verygood}}")
 | 
					 | 
				
			||||||
        eq("{**a, **b, **c}")
 | 
					 | 
				
			||||||
        eq("{'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}")
 | 
					 | 
				
			||||||
        eq("{*a, *b, *c}")
 | 
					 | 
				
			||||||
        eq("({'a': 'b'}, True or False, +value, 'string', b'bytes') or None")
 | 
					 | 
				
			||||||
        eq("()")
 | 
					 | 
				
			||||||
        eq("(a,)")
 | 
					 | 
				
			||||||
        eq("(a, b)")
 | 
					 | 
				
			||||||
        eq("(a, b, c)")
 | 
					 | 
				
			||||||
        eq("(*a, *b, *c)")
 | 
					 | 
				
			||||||
        eq("[]")
 | 
					 | 
				
			||||||
        eq("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]")
 | 
					 | 
				
			||||||
        eq("[*a, *b, *c]")
 | 
					 | 
				
			||||||
        eq("{i for i in (1, 2, 3)}")
 | 
					 | 
				
			||||||
        eq("{i ** 2 for i in (1, 2, 3)}")
 | 
					 | 
				
			||||||
        eq("{i ** 2 for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))}")
 | 
					 | 
				
			||||||
        eq("{i ** 2 + j for i in (1, 2, 3) for j in (1, 2, 3)}")
 | 
					 | 
				
			||||||
        eq("[i for i in (1, 2, 3)]")
 | 
					 | 
				
			||||||
        eq("[i ** 2 for i in (1, 2, 3)]")
 | 
					 | 
				
			||||||
        eq("[i ** 2 for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))]")
 | 
					 | 
				
			||||||
        eq("[i ** 2 + j for i in (1, 2, 3) for j in (1, 2, 3)]")
 | 
					 | 
				
			||||||
        eq("(i for i in (1, 2, 3))")
 | 
					 | 
				
			||||||
        eq("(i ** 2 for i in (1, 2, 3))")
 | 
					 | 
				
			||||||
        eq("(i ** 2 for i, _ in ((1, 'a'), (2, 'b'), (3, 'c')))")
 | 
					 | 
				
			||||||
        eq("(i ** 2 + j for i in (1, 2, 3) for j in (1, 2, 3))")
 | 
					 | 
				
			||||||
        eq("{i: 0 for i in (1, 2, 3)}")
 | 
					 | 
				
			||||||
        eq("{i: j for i, j in ((1, 'a'), (2, 'b'), (3, 'c'))}")
 | 
					 | 
				
			||||||
        eq("[(x, y) for x, y in (a, b)]")
 | 
					 | 
				
			||||||
        eq("[(x,) for x, in (a,)]")
 | 
					 | 
				
			||||||
        eq("Python3 > Python2 > COBOL")
 | 
					 | 
				
			||||||
        eq("Life is Life")
 | 
					 | 
				
			||||||
        eq("call()")
 | 
					 | 
				
			||||||
        eq("call(arg)")
 | 
					 | 
				
			||||||
        eq("call(kwarg='hey')")
 | 
					 | 
				
			||||||
        eq("call(arg, kwarg='hey')")
 | 
					 | 
				
			||||||
        eq("call(arg, *args, another, kwarg='hey')")
 | 
					 | 
				
			||||||
        eq("call(arg, another, kwarg='hey', **kwargs, kwarg2='ho')")
 | 
					 | 
				
			||||||
        eq("lukasz.langa.pl")
 | 
					 | 
				
			||||||
        eq("call.me(maybe)")
 | 
					 | 
				
			||||||
        eq("1 .real")
 | 
					 | 
				
			||||||
        eq("1.0.real")
 | 
					 | 
				
			||||||
        eq("....__class__")
 | 
					 | 
				
			||||||
        eq("list[str]")
 | 
					 | 
				
			||||||
        eq("dict[str, int]")
 | 
					 | 
				
			||||||
        eq("set[str,]")
 | 
					 | 
				
			||||||
        eq("tuple[str, ...]")
 | 
					 | 
				
			||||||
        eq("tuple[(str, *types)]")
 | 
					 | 
				
			||||||
        eq("tuple[str, int, (str, int)]")
 | 
					 | 
				
			||||||
        eq("tuple[(*int, str, str, (str, int))]")
 | 
					 | 
				
			||||||
        eq("tuple[str, int, float, dict[str, int]]")
 | 
					 | 
				
			||||||
        eq("slice[0]")
 | 
					 | 
				
			||||||
        eq("slice[0:1]")
 | 
					 | 
				
			||||||
        eq("slice[0:1:2]")
 | 
					 | 
				
			||||||
        eq("slice[:]")
 | 
					 | 
				
			||||||
        eq("slice[:-1]")
 | 
					 | 
				
			||||||
        eq("slice[1:]")
 | 
					 | 
				
			||||||
        eq("slice[::-1]")
 | 
					 | 
				
			||||||
        eq("slice[:,]")
 | 
					 | 
				
			||||||
        eq("slice[1:2,]")
 | 
					 | 
				
			||||||
        eq("slice[1:2:3,]")
 | 
					 | 
				
			||||||
        eq("slice[1:2, 1]")
 | 
					 | 
				
			||||||
        eq("slice[1:2, 2, 3]")
 | 
					 | 
				
			||||||
        eq("slice[()]")
 | 
					 | 
				
			||||||
        eq("slice[a, b:c, d:e:f]")
 | 
					 | 
				
			||||||
        eq("slice[(x for x in a)]")
 | 
					 | 
				
			||||||
        eq('str or None if sys.version_info[0] > (3,) else str or bytes or None')
 | 
					 | 
				
			||||||
        eq("f'f-string without formatted values is just a string'")
 | 
					 | 
				
			||||||
        eq("f'{{NOT a formatted value}}'")
 | 
					 | 
				
			||||||
        eq("f'some f-string with {a} {few():.2f} {formatted.values!r}'")
 | 
					 | 
				
			||||||
        eq('''f"{f'{nested} inner'} outer"''')
 | 
					 | 
				
			||||||
        eq("f'space between opening braces: { {a for a in (1, 2, 3)}}'")
 | 
					 | 
				
			||||||
        eq("f'{(lambda x: x)}'")
 | 
					 | 
				
			||||||
        eq("f'{(None if a else lambda x: x)}'")
 | 
					 | 
				
			||||||
        eq("f'{x}'")
 | 
					 | 
				
			||||||
        eq("f'{x!r}'")
 | 
					 | 
				
			||||||
        eq("f'{x!a}'")
 | 
					 | 
				
			||||||
        eq('(yield from outside_of_generator)')
 | 
					 | 
				
			||||||
        eq('(yield)')
 | 
					 | 
				
			||||||
        eq('(yield a + b)')
 | 
					 | 
				
			||||||
        eq('await some.complicated[0].call(with_args=True or 1 is not 1)')
 | 
					 | 
				
			||||||
        eq('[x for x in (a if b else c)]')
 | 
					 | 
				
			||||||
        eq('[x for x in a if (b if c else d)]')
 | 
					 | 
				
			||||||
        eq('f(x for x in a)')
 | 
					 | 
				
			||||||
        eq('f(1, (x for x in a))')
 | 
					 | 
				
			||||||
        eq('f((x for x in a), 2)')
 | 
					 | 
				
			||||||
        eq('(((a)))', 'a')
 | 
					 | 
				
			||||||
        eq('(((a, b)))', '(a, b)')
 | 
					 | 
				
			||||||
        eq("(x := 10)")
 | 
					 | 
				
			||||||
        eq("f'{(x := 10):=10}'")
 | 
					 | 
				
			||||||
        eq("1 + 2")
 | 
					 | 
				
			||||||
        eq("1 + 2 + 3")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_fstring_debug_annotations(self):
 | 
					 | 
				
			||||||
        # f-strings with '=' don't round trip very well, so set the expected
 | 
					 | 
				
			||||||
        # result explicitely.
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("f'{x=!r}'", expected="f'x={x!r}'")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("f'{x=:}'", expected="f'x={x:}'")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("f'{x=:.2f}'", expected="f'x={x:.2f}'")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("f'{x=!r}'", expected="f'x={x!r}'")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("f'{x=!a}'", expected="f'x={x!a}'")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("f'{x=!s:*^20}'", expected="f'x={x!s:*^20}'")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_infinity_numbers(self):
 | 
					 | 
				
			||||||
        inf = "1e" + repr(sys.float_info.max_10_exp + 1)
 | 
					 | 
				
			||||||
        infj = f"{inf}j"
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("1e1000", expected=inf)
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("1e1000j", expected=infj)
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("-1e1000", expected=f"-{inf}")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("3+1e1000j", expected=f"3 + {infj}")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("(1e1000, 1e1000j)", expected=f"({inf}, {infj})")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("'inf'")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("('inf', 1e1000, 'infxxx', 1e1000j)", expected=f"('inf', {inf}, 'infxxx', {infj})")
 | 
					 | 
				
			||||||
        self.assertAnnotationEqual("(1e1000, (1e1000j,))", expected=f"({inf}, ({infj},))")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == "__main__":
 | 
					 | 
				
			||||||
    unittest.main()
 | 
					 | 
				
			||||||
| 
						 | 
					@ -91,6 +91,10 @@ def test_badsyntax_1(self):
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
            """,
 | 
					            """,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            """async def foo(a:await something()):
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					            """,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            """async def foo():
 | 
					            """async def foo():
 | 
				
			||||||
                def bar():
 | 
					                def bar():
 | 
				
			||||||
                 [i async for i in els]
 | 
					                 [i async for i in els]
 | 
				
			||||||
| 
						 | 
					@ -295,6 +299,10 @@ def bar():
 | 
				
			||||||
                   pass
 | 
					                   pass
 | 
				
			||||||
            """,
 | 
					            """,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            """async def foo(a:await b):
 | 
				
			||||||
 | 
					                   pass
 | 
				
			||||||
 | 
					            """,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            """def baz():
 | 
					            """def baz():
 | 
				
			||||||
                   async def foo(a=await b):
 | 
					                   async def foo(a=await b):
 | 
				
			||||||
                       pass
 | 
					                       pass
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,6 @@
 | 
				
			||||||
import inspect
 | 
					import inspect
 | 
				
			||||||
import builtins
 | 
					import builtins
 | 
				
			||||||
import unittest
 | 
					import unittest
 | 
				
			||||||
from textwrap import dedent
 | 
					 | 
				
			||||||
from unittest.mock import Mock
 | 
					from unittest.mock import Mock
 | 
				
			||||||
from typing import ClassVar, Any, List, Union, Tuple, Dict, Generic, TypeVar, Optional
 | 
					from typing import ClassVar, Any, List, Union, Tuple, Dict, Generic, TypeVar, Optional
 | 
				
			||||||
from typing import get_type_hints
 | 
					from typing import get_type_hints
 | 
				
			||||||
| 
						 | 
					@ -563,17 +562,17 @@ class C:
 | 
				
			||||||
        self.assertEqual(len(the_fields), 3)
 | 
					        self.assertEqual(len(the_fields), 3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(the_fields[0].name, 'x')
 | 
					        self.assertEqual(the_fields[0].name, 'x')
 | 
				
			||||||
        self.assertEqual(the_fields[0].type, 'int')
 | 
					        self.assertEqual(the_fields[0].type, int)
 | 
				
			||||||
        self.assertFalse(hasattr(C, 'x'))
 | 
					        self.assertFalse(hasattr(C, 'x'))
 | 
				
			||||||
        self.assertTrue (the_fields[0].init)
 | 
					        self.assertTrue (the_fields[0].init)
 | 
				
			||||||
        self.assertTrue (the_fields[0].repr)
 | 
					        self.assertTrue (the_fields[0].repr)
 | 
				
			||||||
        self.assertEqual(the_fields[1].name, 'y')
 | 
					        self.assertEqual(the_fields[1].name, 'y')
 | 
				
			||||||
        self.assertEqual(the_fields[1].type, 'str')
 | 
					        self.assertEqual(the_fields[1].type, str)
 | 
				
			||||||
        self.assertIsNone(getattr(C, 'y'))
 | 
					        self.assertIsNone(getattr(C, 'y'))
 | 
				
			||||||
        self.assertFalse(the_fields[1].init)
 | 
					        self.assertFalse(the_fields[1].init)
 | 
				
			||||||
        self.assertTrue (the_fields[1].repr)
 | 
					        self.assertTrue (the_fields[1].repr)
 | 
				
			||||||
        self.assertEqual(the_fields[2].name, 'z')
 | 
					        self.assertEqual(the_fields[2].name, 'z')
 | 
				
			||||||
        self.assertEqual(the_fields[2].type, 'str')
 | 
					        self.assertEqual(the_fields[2].type, str)
 | 
				
			||||||
        self.assertFalse(hasattr(C, 'z'))
 | 
					        self.assertFalse(hasattr(C, 'z'))
 | 
				
			||||||
        self.assertTrue (the_fields[2].init)
 | 
					        self.assertTrue (the_fields[2].init)
 | 
				
			||||||
        self.assertFalse(the_fields[2].repr)
 | 
					        self.assertFalse(the_fields[2].repr)
 | 
				
			||||||
| 
						 | 
					@ -759,11 +758,11 @@ class F:
 | 
				
			||||||
        def validate_class(cls):
 | 
					        def validate_class(cls):
 | 
				
			||||||
            # First, check __annotations__, even though they're not
 | 
					            # First, check __annotations__, even though they're not
 | 
				
			||||||
            #  function annotations.
 | 
					            #  function annotations.
 | 
				
			||||||
            self.assertEqual(cls.__annotations__['i'], 'int')
 | 
					            self.assertEqual(cls.__annotations__['i'], int)
 | 
				
			||||||
            self.assertEqual(cls.__annotations__['j'], 'str')
 | 
					            self.assertEqual(cls.__annotations__['j'], str)
 | 
				
			||||||
            self.assertEqual(cls.__annotations__['k'], 'F')
 | 
					            self.assertEqual(cls.__annotations__['k'], F)
 | 
				
			||||||
            self.assertEqual(cls.__annotations__['l'], 'float')
 | 
					            self.assertEqual(cls.__annotations__['l'], float)
 | 
				
			||||||
            self.assertEqual(cls.__annotations__['z'], 'complex')
 | 
					            self.assertEqual(cls.__annotations__['z'], complex)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Verify __init__.
 | 
					            # Verify __init__.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -778,22 +777,22 @@ def validate_class(cls):
 | 
				
			||||||
            self.assertEqual(param.name, 'self')
 | 
					            self.assertEqual(param.name, 'self')
 | 
				
			||||||
            param = next(params)
 | 
					            param = next(params)
 | 
				
			||||||
            self.assertEqual(param.name, 'i')
 | 
					            self.assertEqual(param.name, 'i')
 | 
				
			||||||
            self.assertIs   (param.annotation, 'int')
 | 
					            self.assertIs   (param.annotation, int)
 | 
				
			||||||
            self.assertEqual(param.default, inspect.Parameter.empty)
 | 
					            self.assertEqual(param.default, inspect.Parameter.empty)
 | 
				
			||||||
            self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD)
 | 
					            self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD)
 | 
				
			||||||
            param = next(params)
 | 
					            param = next(params)
 | 
				
			||||||
            self.assertEqual(param.name, 'j')
 | 
					            self.assertEqual(param.name, 'j')
 | 
				
			||||||
            self.assertIs   (param.annotation, 'str')
 | 
					            self.assertIs   (param.annotation, str)
 | 
				
			||||||
            self.assertEqual(param.default, inspect.Parameter.empty)
 | 
					            self.assertEqual(param.default, inspect.Parameter.empty)
 | 
				
			||||||
            self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD)
 | 
					            self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD)
 | 
				
			||||||
            param = next(params)
 | 
					            param = next(params)
 | 
				
			||||||
            self.assertEqual(param.name, 'k')
 | 
					            self.assertEqual(param.name, 'k')
 | 
				
			||||||
            self.assertIs   (param.annotation, 'F')
 | 
					            self.assertIs   (param.annotation, F)
 | 
				
			||||||
            # Don't test for the default, since it's set to MISSING.
 | 
					            # Don't test for the default, since it's set to MISSING.
 | 
				
			||||||
            self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD)
 | 
					            self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD)
 | 
				
			||||||
            param = next(params)
 | 
					            param = next(params)
 | 
				
			||||||
            self.assertEqual(param.name, 'l')
 | 
					            self.assertEqual(param.name, 'l')
 | 
				
			||||||
            self.assertIs   (param.annotation, 'float')
 | 
					            self.assertIs   (param.annotation, float)
 | 
				
			||||||
            # Don't test for the default, since it's set to MISSING.
 | 
					            # Don't test for the default, since it's set to MISSING.
 | 
				
			||||||
            self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD)
 | 
					            self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD)
 | 
				
			||||||
            self.assertRaises(StopIteration, next, params)
 | 
					            self.assertRaises(StopIteration, next, params)
 | 
				
			||||||
| 
						 | 
					@ -2855,6 +2854,9 @@ class C:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestStringAnnotations(unittest.TestCase):
 | 
					class TestStringAnnotations(unittest.TestCase):
 | 
				
			||||||
    def test_classvar(self):
 | 
					    def test_classvar(self):
 | 
				
			||||||
 | 
					        # Some expressions recognized as ClassVar really aren't.  But
 | 
				
			||||||
 | 
					        #  if you're using string annotations, it's not an exact
 | 
				
			||||||
 | 
					        #  science.
 | 
				
			||||||
        # These tests assume that both "import typing" and "from
 | 
					        # These tests assume that both "import typing" and "from
 | 
				
			||||||
        # typing import *" have been run in this file.
 | 
					        # typing import *" have been run in this file.
 | 
				
			||||||
        for typestr in ('ClassVar[int]',
 | 
					        for typestr in ('ClassVar[int]',
 | 
				
			||||||
| 
						 | 
					@ -2869,15 +2871,17 @@ def test_classvar(self):
 | 
				
			||||||
                        'typing. ClassVar[str]',
 | 
					                        'typing. ClassVar[str]',
 | 
				
			||||||
                        'typing.ClassVar [str]',
 | 
					                        'typing.ClassVar [str]',
 | 
				
			||||||
                        'typing.ClassVar [ str]',
 | 
					                        'typing.ClassVar [ str]',
 | 
				
			||||||
                        # Double stringified
 | 
					
 | 
				
			||||||
                        '"typing.ClassVar[int]"',
 | 
					 | 
				
			||||||
                        # Not syntactically valid, but these will
 | 
					                        # Not syntactically valid, but these will
 | 
				
			||||||
                        #  be treated as ClassVars.
 | 
					                        #  be treated as ClassVars.
 | 
				
			||||||
                        'typing.ClassVar.[int]',
 | 
					                        'typing.ClassVar.[int]',
 | 
				
			||||||
                        'typing.ClassVar+',
 | 
					                        'typing.ClassVar+',
 | 
				
			||||||
                        ):
 | 
					                        ):
 | 
				
			||||||
            with self.subTest(typestr=typestr):
 | 
					            with self.subTest(typestr=typestr):
 | 
				
			||||||
                C = dataclass(type("C", (), {"__annotations__": {"x": typestr}}))
 | 
					                @dataclass
 | 
				
			||||||
 | 
					                class C:
 | 
				
			||||||
 | 
					                    x: typestr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # x is a ClassVar, so C() takes no args.
 | 
					                # x is a ClassVar, so C() takes no args.
 | 
				
			||||||
                C()
 | 
					                C()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2898,7 +2902,9 @@ def test_isnt_classvar(self):
 | 
				
			||||||
                        'typingxClassVar[str]',
 | 
					                        'typingxClassVar[str]',
 | 
				
			||||||
                        ):
 | 
					                        ):
 | 
				
			||||||
            with self.subTest(typestr=typestr):
 | 
					            with self.subTest(typestr=typestr):
 | 
				
			||||||
                C = dataclass(type("C", (), {"__annotations__": {"x": typestr}}))
 | 
					                @dataclass
 | 
				
			||||||
 | 
					                class C:
 | 
				
			||||||
 | 
					                    x: typestr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # x is not a ClassVar, so C() takes one arg.
 | 
					                # x is not a ClassVar, so C() takes one arg.
 | 
				
			||||||
                self.assertEqual(C(10).x, 10)
 | 
					                self.assertEqual(C(10).x, 10)
 | 
				
			||||||
| 
						 | 
					@ -2918,16 +2924,16 @@ def test_initvar(self):
 | 
				
			||||||
                        'dataclasses. InitVar[str]',
 | 
					                        'dataclasses. InitVar[str]',
 | 
				
			||||||
                        'dataclasses.InitVar [str]',
 | 
					                        'dataclasses.InitVar [str]',
 | 
				
			||||||
                        'dataclasses.InitVar [ str]',
 | 
					                        'dataclasses.InitVar [ str]',
 | 
				
			||||||
                        # Double stringified
 | 
					
 | 
				
			||||||
                        '"dataclasses.InitVar[int]"',
 | 
					 | 
				
			||||||
                        # Not syntactically valid, but these will
 | 
					                        # Not syntactically valid, but these will
 | 
				
			||||||
                        #  be treated as InitVars.
 | 
					                        #  be treated as InitVars.
 | 
				
			||||||
                        'dataclasses.InitVar.[int]',
 | 
					                        'dataclasses.InitVar.[int]',
 | 
				
			||||||
                        'dataclasses.InitVar+',
 | 
					                        'dataclasses.InitVar+',
 | 
				
			||||||
                        ):
 | 
					                        ):
 | 
				
			||||||
            with self.subTest(typestr=typestr):
 | 
					            with self.subTest(typestr=typestr):
 | 
				
			||||||
                C = dataclass(type("C", (), {"__annotations__": {"x": typestr}}))
 | 
					                @dataclass
 | 
				
			||||||
 | 
					                class C:
 | 
				
			||||||
 | 
					                    x: typestr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # x is an InitVar, so doesn't create a member.
 | 
					                # x is an InitVar, so doesn't create a member.
 | 
				
			||||||
                with self.assertRaisesRegex(AttributeError,
 | 
					                with self.assertRaisesRegex(AttributeError,
 | 
				
			||||||
| 
						 | 
					@ -2941,22 +2947,30 @@ def test_isnt_initvar(self):
 | 
				
			||||||
                        'typing.xInitVar[int]',
 | 
					                        'typing.xInitVar[int]',
 | 
				
			||||||
                        ):
 | 
					                        ):
 | 
				
			||||||
            with self.subTest(typestr=typestr):
 | 
					            with self.subTest(typestr=typestr):
 | 
				
			||||||
                C = dataclass(type("C", (), {"__annotations__": {"x": typestr}}))
 | 
					                @dataclass
 | 
				
			||||||
 | 
					                class C:
 | 
				
			||||||
 | 
					                    x: typestr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # x is not an InitVar, so there will be a member x.
 | 
					                # x is not an InitVar, so there will be a member x.
 | 
				
			||||||
                self.assertEqual(C(10).x, 10)
 | 
					                self.assertEqual(C(10).x, 10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_classvar_module_level_import(self):
 | 
					    def test_classvar_module_level_import(self):
 | 
				
			||||||
        from test import dataclass_module_1
 | 
					        from test import dataclass_module_1
 | 
				
			||||||
 | 
					        from test import dataclass_module_1_str
 | 
				
			||||||
        from test import dataclass_module_2
 | 
					        from test import dataclass_module_2
 | 
				
			||||||
 | 
					        from test import dataclass_module_2_str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for m in (dataclass_module_1,
 | 
					        for m in (dataclass_module_1, dataclass_module_1_str,
 | 
				
			||||||
                  dataclass_module_2):
 | 
					                  dataclass_module_2, dataclass_module_2_str,
 | 
				
			||||||
 | 
					                  ):
 | 
				
			||||||
            with self.subTest(m=m):
 | 
					            with self.subTest(m=m):
 | 
				
			||||||
                # There's a difference in how the ClassVars are
 | 
					                # There's a difference in how the ClassVars are
 | 
				
			||||||
                # interpreted when using string annotations or
 | 
					                # interpreted when using string annotations or
 | 
				
			||||||
                # not. See the imported modules for details.
 | 
					                # not. See the imported modules for details.
 | 
				
			||||||
 | 
					                if m.USING_STRINGS:
 | 
				
			||||||
                    c = m.CV(10)
 | 
					                    c = m.CV(10)
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    c = m.CV()
 | 
				
			||||||
                self.assertEqual(c.cv0, 20)
 | 
					                self.assertEqual(c.cv0, 20)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2972,9 +2986,14 @@ def test_classvar_module_level_import(self):
 | 
				
			||||||
                            # not an instance field.
 | 
					                            # not an instance field.
 | 
				
			||||||
                            getattr(c, field_name)
 | 
					                            getattr(c, field_name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if m.USING_STRINGS:
 | 
				
			||||||
                    # iv4 is interpreted as a normal field.
 | 
					                    # iv4 is interpreted as a normal field.
 | 
				
			||||||
                    self.assertIn('not_iv4', c.__dict__)
 | 
					                    self.assertIn('not_iv4', c.__dict__)
 | 
				
			||||||
                    self.assertEqual(c.not_iv4, 4)
 | 
					                    self.assertEqual(c.not_iv4, 4)
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    # iv4 is interpreted as an InitVar, so it
 | 
				
			||||||
 | 
					                    # won't exist on the instance.
 | 
				
			||||||
 | 
					                    self.assertNotIn('not_iv4', c.__dict__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_text_annotations(self):
 | 
					    def test_text_annotations(self):
 | 
				
			||||||
        from test import dataclass_textanno
 | 
					        from test import dataclass_textanno
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -237,26 +237,28 @@ def bug42562():
 | 
				
			||||||
  2           0 SETUP_ANNOTATIONS
 | 
					  2           0 SETUP_ANNOTATIONS
 | 
				
			||||||
              2 LOAD_CONST               0 (1)
 | 
					              2 LOAD_CONST               0 (1)
 | 
				
			||||||
              4 STORE_NAME               0 (x)
 | 
					              4 STORE_NAME               0 (x)
 | 
				
			||||||
              6 LOAD_CONST               1 ('int')
 | 
					              6 LOAD_NAME                1 (int)
 | 
				
			||||||
              8 LOAD_NAME                1 (__annotations__)
 | 
					              8 LOAD_NAME                2 (__annotations__)
 | 
				
			||||||
             10 LOAD_CONST               2 ('x')
 | 
					             10 LOAD_CONST               1 ('x')
 | 
				
			||||||
             12 STORE_SUBSCR
 | 
					             12 STORE_SUBSCR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  3          14 LOAD_CONST               3 ('fun(1)')
 | 
					  3          14 LOAD_NAME                3 (fun)
 | 
				
			||||||
             16 LOAD_NAME                1 (__annotations__)
 | 
					             16 LOAD_CONST               0 (1)
 | 
				
			||||||
             18 LOAD_CONST               4 ('y')
 | 
					             18 CALL_FUNCTION            1
 | 
				
			||||||
             20 STORE_SUBSCR
 | 
					             20 LOAD_NAME                2 (__annotations__)
 | 
				
			||||||
 | 
					             22 LOAD_CONST               2 ('y')
 | 
				
			||||||
 | 
					             24 STORE_SUBSCR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  4          22 LOAD_CONST               0 (1)
 | 
					  4          26 LOAD_CONST               0 (1)
 | 
				
			||||||
             24 LOAD_NAME                2 (lst)
 | 
					             28 LOAD_NAME                4 (lst)
 | 
				
			||||||
             26 LOAD_NAME                3 (fun)
 | 
					             30 LOAD_NAME                3 (fun)
 | 
				
			||||||
             28 LOAD_CONST               5 (0)
 | 
					             32 LOAD_CONST               3 (0)
 | 
				
			||||||
             30 CALL_FUNCTION            1
 | 
					             34 CALL_FUNCTION            1
 | 
				
			||||||
             32 STORE_SUBSCR
 | 
					             36 STORE_SUBSCR
 | 
				
			||||||
             34 LOAD_NAME                4 (int)
 | 
					             38 LOAD_NAME                1 (int)
 | 
				
			||||||
             36 POP_TOP
 | 
					             40 POP_TOP
 | 
				
			||||||
             38 LOAD_CONST               6 (None)
 | 
					             42 LOAD_CONST               4 (None)
 | 
				
			||||||
             40 RETURN_VALUE
 | 
					             44 RETURN_VALUE
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
compound_stmt_str = """\
 | 
					compound_stmt_str = """\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -617,7 +617,7 @@ def check_wrapper(self, wrapper, wrapped,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _default_update(self):
 | 
					    def _default_update(self):
 | 
				
			||||||
        def f(a: int):
 | 
					        def f(a:'This is a new annotation'):
 | 
				
			||||||
            """This is a test"""
 | 
					            """This is a test"""
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
        f.attr = 'This is also a test'
 | 
					        f.attr = 'This is also a test'
 | 
				
			||||||
| 
						 | 
					@ -634,7 +634,7 @@ def test_default_update(self):
 | 
				
			||||||
        self.assertEqual(wrapper.__name__, 'f')
 | 
					        self.assertEqual(wrapper.__name__, 'f')
 | 
				
			||||||
        self.assertEqual(wrapper.__qualname__, f.__qualname__)
 | 
					        self.assertEqual(wrapper.__qualname__, f.__qualname__)
 | 
				
			||||||
        self.assertEqual(wrapper.attr, 'This is also a test')
 | 
					        self.assertEqual(wrapper.attr, 'This is also a test')
 | 
				
			||||||
        self.assertEqual(wrapper.__annotations__['a'], 'int')
 | 
					        self.assertEqual(wrapper.__annotations__['a'], 'This is a new annotation')
 | 
				
			||||||
        self.assertNotIn('b', wrapper.__annotations__)
 | 
					        self.assertNotIn('b', wrapper.__annotations__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @unittest.skipIf(sys.flags.optimize >= 2,
 | 
					    @unittest.skipIf(sys.flags.optimize >= 2,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -363,7 +363,7 @@ class C:
 | 
				
			||||||
            z = 2
 | 
					            z = 2
 | 
				
			||||||
            def __init__(self, x):
 | 
					            def __init__(self, x):
 | 
				
			||||||
                self.x: int = x
 | 
					                self.x: int = x
 | 
				
			||||||
        self.assertEqual(C.__annotations__, {'_C__foo': 'int', 's': 'str'})
 | 
					        self.assertEqual(C.__annotations__, {'_C__foo': int, 's': str})
 | 
				
			||||||
        with self.assertRaises(NameError):
 | 
					        with self.assertRaises(NameError):
 | 
				
			||||||
            class CBad:
 | 
					            class CBad:
 | 
				
			||||||
                no_such_name_defined.attr: int = 0
 | 
					                no_such_name_defined.attr: int = 0
 | 
				
			||||||
| 
						 | 
					@ -379,15 +379,15 @@ def __prepare__(metacls, name, bases, **kwds):
 | 
				
			||||||
                return {'__annotations__': CNS()}
 | 
					                return {'__annotations__': CNS()}
 | 
				
			||||||
        class CC(metaclass=CMeta):
 | 
					        class CC(metaclass=CMeta):
 | 
				
			||||||
            XX: 'ANNOT'
 | 
					            XX: 'ANNOT'
 | 
				
			||||||
        self.assertEqual(CC.__annotations__['xx'], repr('ANNOT'))
 | 
					        self.assertEqual(CC.__annotations__['xx'], 'ANNOT')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_var_annot_module_semantics(self):
 | 
					    def test_var_annot_module_semantics(self):
 | 
				
			||||||
        with self.assertRaises(AttributeError):
 | 
					        with self.assertRaises(AttributeError):
 | 
				
			||||||
            print(test.__annotations__)
 | 
					            print(test.__annotations__)
 | 
				
			||||||
        self.assertEqual(ann_module.__annotations__,
 | 
					        self.assertEqual(ann_module.__annotations__,
 | 
				
			||||||
                     {1: 2, 'x': 'int', 'y': 'str', 'f': 'Tuple[int, int]'})
 | 
					                     {1: 2, 'x': int, 'y': str, 'f': typing.Tuple[int, int]})
 | 
				
			||||||
        self.assertEqual(ann_module.M.__annotations__,
 | 
					        self.assertEqual(ann_module.M.__annotations__,
 | 
				
			||||||
                              {'123': 123, 'o': 'type'})
 | 
					                              {'123': 123, 'o': type})
 | 
				
			||||||
        self.assertEqual(ann_module2.__annotations__, {})
 | 
					        self.assertEqual(ann_module2.__annotations__, {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_var_annot_in_module(self):
 | 
					    def test_var_annot_in_module(self):
 | 
				
			||||||
| 
						 | 
					@ -406,7 +406,7 @@ def test_var_annot_simple_exec(self):
 | 
				
			||||||
        exec("'docstring'\n"
 | 
					        exec("'docstring'\n"
 | 
				
			||||||
             "__annotations__[1] = 2\n"
 | 
					             "__annotations__[1] = 2\n"
 | 
				
			||||||
             "x: int = 5\n", gns, lns)
 | 
					             "x: int = 5\n", gns, lns)
 | 
				
			||||||
        self.assertEqual(lns["__annotations__"], {1: 2, 'x': 'int'})
 | 
					        self.assertEqual(lns["__annotations__"], {1: 2, 'x': int})
 | 
				
			||||||
        with self.assertRaises(KeyError):
 | 
					        with self.assertRaises(KeyError):
 | 
				
			||||||
            gns['__annotations__']
 | 
					            gns['__annotations__']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -414,8 +414,8 @@ def test_var_annot_custom_maps(self):
 | 
				
			||||||
        # tests with custom locals() and __annotations__
 | 
					        # tests with custom locals() and __annotations__
 | 
				
			||||||
        ns = {'__annotations__': CNS()}
 | 
					        ns = {'__annotations__': CNS()}
 | 
				
			||||||
        exec('X: int; Z: str = "Z"; (w): complex = 1j', ns)
 | 
					        exec('X: int; Z: str = "Z"; (w): complex = 1j', ns)
 | 
				
			||||||
        self.assertEqual(ns['__annotations__']['x'], 'int')
 | 
					        self.assertEqual(ns['__annotations__']['x'], int)
 | 
				
			||||||
        self.assertEqual(ns['__annotations__']['z'], 'str')
 | 
					        self.assertEqual(ns['__annotations__']['z'], str)
 | 
				
			||||||
        with self.assertRaises(KeyError):
 | 
					        with self.assertRaises(KeyError):
 | 
				
			||||||
            ns['__annotations__']['w']
 | 
					            ns['__annotations__']['w']
 | 
				
			||||||
        nonloc_ns = {}
 | 
					        nonloc_ns = {}
 | 
				
			||||||
| 
						 | 
					@ -429,7 +429,7 @@ def __setitem__(self, item, value):
 | 
				
			||||||
            def __getitem__(self, item):
 | 
					            def __getitem__(self, item):
 | 
				
			||||||
                return self._dct[item]
 | 
					                return self._dct[item]
 | 
				
			||||||
        exec('x: int = 1', {}, CNS2())
 | 
					        exec('x: int = 1', {}, CNS2())
 | 
				
			||||||
        self.assertEqual(nonloc_ns['__annotations__']['x'], 'int')
 | 
					        self.assertEqual(nonloc_ns['__annotations__']['x'], int)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_var_annot_refleak(self):
 | 
					    def test_var_annot_refleak(self):
 | 
				
			||||||
        # complex case: custom locals plus custom __annotations__
 | 
					        # complex case: custom locals plus custom __annotations__
 | 
				
			||||||
| 
						 | 
					@ -446,7 +446,7 @@ def __setitem__(self, item, value):
 | 
				
			||||||
            def __getitem__(self, item):
 | 
					            def __getitem__(self, item):
 | 
				
			||||||
                return self._dct[item]
 | 
					                return self._dct[item]
 | 
				
			||||||
        exec('X: str', {}, CNS2())
 | 
					        exec('X: str', {}, CNS2())
 | 
				
			||||||
        self.assertEqual(nonloc_ns['__annotations__']['x'], 'str')
 | 
					        self.assertEqual(nonloc_ns['__annotations__']['x'], str)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_var_annot_rhs(self):
 | 
					    def test_var_annot_rhs(self):
 | 
				
			||||||
        ns = {}
 | 
					        ns = {}
 | 
				
			||||||
| 
						 | 
					@ -626,46 +626,50 @@ def f(*args, **kwargs):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # argument annotation tests
 | 
					        # argument annotation tests
 | 
				
			||||||
        def f(x) -> list: pass
 | 
					        def f(x) -> list: pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'return': 'list'})
 | 
					        self.assertEqual(f.__annotations__, {'return': list})
 | 
				
			||||||
        def f(x: int): pass
 | 
					        def f(x: int): pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'x': 'int'})
 | 
					        self.assertEqual(f.__annotations__, {'x': int})
 | 
				
			||||||
        def f(x: int, /): pass
 | 
					        def f(x: int, /): pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'x': 'int'})
 | 
					        self.assertEqual(f.__annotations__, {'x': int})
 | 
				
			||||||
        def f(x: int = 34, /): pass
 | 
					        def f(x: int = 34, /): pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'x': 'int'})
 | 
					        self.assertEqual(f.__annotations__, {'x': int})
 | 
				
			||||||
        def f(*x: str): pass
 | 
					        def f(*x: str): pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'x': 'str'})
 | 
					        self.assertEqual(f.__annotations__, {'x': str})
 | 
				
			||||||
        def f(**x: float): pass
 | 
					        def f(**x: float): pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'x': 'float'})
 | 
					        self.assertEqual(f.__annotations__, {'x': float})
 | 
				
			||||||
 | 
					        def f(x, y: 1+2): pass
 | 
				
			||||||
 | 
					        self.assertEqual(f.__annotations__, {'y': 3})
 | 
				
			||||||
 | 
					        def f(x, y: 1+2, /): pass
 | 
				
			||||||
 | 
					        self.assertEqual(f.__annotations__, {'y': 3})
 | 
				
			||||||
        def f(a, b: 1, c: 2, d): pass
 | 
					        def f(a, b: 1, c: 2, d): pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'b': '1', 'c': '2'})
 | 
					        self.assertEqual(f.__annotations__, {'b': 1, 'c': 2})
 | 
				
			||||||
        def f(a, b: 1, /, c: 2, d): pass
 | 
					        def f(a, b: 1, /, c: 2, d): pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'b': '1', 'c': '2'})
 | 
					        self.assertEqual(f.__annotations__, {'b': 1, 'c': 2})
 | 
				
			||||||
        def f(a, b: 1, c: 2, d, e: 3 = 4, f=5, *g: 6): pass
 | 
					        def f(a, b: 1, c: 2, d, e: 3 = 4, f=5, *g: 6): pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__,
 | 
					        self.assertEqual(f.__annotations__,
 | 
				
			||||||
                         {'b': '1', 'c': '2', 'e': '3', 'g': '6'})
 | 
					                         {'b': 1, 'c': 2, 'e': 3, 'g': 6})
 | 
				
			||||||
        def f(a, b: 1, c: 2, d, e: 3 = 4, f=5, *g: 6, h: 7, i=8, j: 9 = 10,
 | 
					        def f(a, b: 1, c: 2, d, e: 3 = 4, f=5, *g: 6, h: 7, i=8, j: 9 = 10,
 | 
				
			||||||
              **k: 11) -> 12: pass
 | 
					              **k: 11) -> 12: pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__,
 | 
					        self.assertEqual(f.__annotations__,
 | 
				
			||||||
                         {'b': '1', 'c': '2', 'e': '3', 'g': '6', 'h': '7', 'j': '9',
 | 
					                         {'b': 1, 'c': 2, 'e': 3, 'g': 6, 'h': 7, 'j': 9,
 | 
				
			||||||
                          'k': '11', 'return': '12'})
 | 
					                          'k': 11, 'return': 12})
 | 
				
			||||||
        def f(a, b: 1, c: 2, d, e: 3 = 4, f: int = 5, /, *g: 6, h: 7, i=8, j: 9 = 10,
 | 
					        def f(a, b: 1, c: 2, d, e: 3 = 4, f: int = 5, /, *g: 6, h: 7, i=8, j: 9 = 10,
 | 
				
			||||||
              **k: 11) -> 12: pass
 | 
					              **k: 11) -> 12: pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__,
 | 
					        self.assertEqual(f.__annotations__,
 | 
				
			||||||
                          {'b': '1', 'c': '2', 'e': '3', 'f': 'int', 'g': '6', 'h': '7', 'j': '9',
 | 
					                          {'b': 1, 'c': 2, 'e': 3, 'f': int, 'g': 6, 'h': 7, 'j': 9,
 | 
				
			||||||
                           'k': '11', 'return': '12'})
 | 
					                           'k': 11, 'return': 12})
 | 
				
			||||||
        # Check for issue #20625 -- annotations mangling
 | 
					        # Check for issue #20625 -- annotations mangling
 | 
				
			||||||
        class Spam:
 | 
					        class Spam:
 | 
				
			||||||
            def f(self, *, __kw: 1):
 | 
					            def f(self, *, __kw: 1):
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
        class Ham(Spam): pass
 | 
					        class Ham(Spam): pass
 | 
				
			||||||
        self.assertEqual(Spam.f.__annotations__, {'_Spam__kw': '1'})
 | 
					        self.assertEqual(Spam.f.__annotations__, {'_Spam__kw': 1})
 | 
				
			||||||
        self.assertEqual(Ham.f.__annotations__, {'_Spam__kw': '1'})
 | 
					        self.assertEqual(Ham.f.__annotations__, {'_Spam__kw': 1})
 | 
				
			||||||
        # Check for SF Bug #1697248 - mixing decorators and a return annotation
 | 
					        # Check for SF Bug #1697248 - mixing decorators and a return annotation
 | 
				
			||||||
        def null(x): return x
 | 
					        def null(x): return x
 | 
				
			||||||
        @null
 | 
					        @null
 | 
				
			||||||
        def f(x) -> list: pass
 | 
					        def f(x) -> list: pass
 | 
				
			||||||
        self.assertEqual(f.__annotations__, {'return': 'list'})
 | 
					        self.assertEqual(f.__annotations__, {'return': list})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Test expressions as decorators (PEP 614):
 | 
					        # Test expressions as decorators (PEP 614):
 | 
				
			||||||
        @False or null
 | 
					        @False or null
 | 
				
			||||||
| 
						 | 
					@ -1113,6 +1117,8 @@ def g(): rest = 4, 5, 6; yield 1, 2, 3, *rest
 | 
				
			||||||
        # Not allowed at class scope
 | 
					        # Not allowed at class scope
 | 
				
			||||||
        check_syntax_error(self, "class foo:yield 1")
 | 
					        check_syntax_error(self, "class foo:yield 1")
 | 
				
			||||||
        check_syntax_error(self, "class foo:yield from ()")
 | 
					        check_syntax_error(self, "class foo:yield from ()")
 | 
				
			||||||
 | 
					        # Check annotation refleak on SyntaxError
 | 
				
			||||||
 | 
					        check_syntax_error(self, "def g(a:(yield)): pass")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_yield_in_comprehensions(self):
 | 
					    def test_yield_in_comprehensions(self):
 | 
				
			||||||
        # Check yield in comprehensions
 | 
					        # Check yield in comprehensions
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -888,7 +888,7 @@ def test_getfullargspec(self):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertFullArgSpecEquals(mod2.annotated, ['arg1'],
 | 
					        self.assertFullArgSpecEquals(mod2.annotated, ['arg1'],
 | 
				
			||||||
                                     ann_e={'arg1' : list},
 | 
					                                     ann_e={'arg1' : list},
 | 
				
			||||||
                                     formatted="(arg1: list)")
 | 
					                                     formatted='(arg1: list)')
 | 
				
			||||||
        self.assertFullArgSpecEquals(mod2.keyword_only_arg, [],
 | 
					        self.assertFullArgSpecEquals(mod2.keyword_only_arg, [],
 | 
				
			||||||
                                     kwonlyargs_e=['arg'],
 | 
					                                     kwonlyargs_e=['arg'],
 | 
				
			||||||
                                     formatted='(*, arg)')
 | 
					                                     formatted='(*, arg)')
 | 
				
			||||||
| 
						 | 
					@ -2237,8 +2237,8 @@ def test(a, b:'foo') -> 123:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
        self.assertEqual(self.signature(test),
 | 
					        self.assertEqual(self.signature(test),
 | 
				
			||||||
                         ((('a', ..., ..., "positional_or_keyword"),
 | 
					                         ((('a', ..., ..., "positional_or_keyword"),
 | 
				
			||||||
                           ('b', ..., repr('foo'), "positional_or_keyword")),
 | 
					                           ('b', ..., 'foo', "positional_or_keyword")),
 | 
				
			||||||
                          '123'))
 | 
					                          123))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_signature_on_wkwonly(self):
 | 
					    def test_signature_on_wkwonly(self):
 | 
				
			||||||
        def test(*, a:float, b:str) -> int:
 | 
					        def test(*, a:float, b:str) -> int:
 | 
				
			||||||
| 
						 | 
					@ -2253,11 +2253,11 @@ def test(a, b:'foo'=10, *args:'bar', spam:'baz', ham=123, **kwargs:int):
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
        self.assertEqual(self.signature(test),
 | 
					        self.assertEqual(self.signature(test),
 | 
				
			||||||
                         ((('a', ..., ..., "positional_or_keyword"),
 | 
					                         ((('a', ..., ..., "positional_or_keyword"),
 | 
				
			||||||
                           ('b', 10, repr('foo'), "positional_or_keyword"),
 | 
					                           ('b', 10, 'foo', "positional_or_keyword"),
 | 
				
			||||||
                           ('args', ..., repr('bar'), "var_positional"),
 | 
					                           ('args', ..., 'bar', "var_positional"),
 | 
				
			||||||
                           ('spam', ..., repr('baz'), "keyword_only"),
 | 
					                           ('spam', ..., 'baz', "keyword_only"),
 | 
				
			||||||
                           ('ham', 123, ..., "keyword_only"),
 | 
					                           ('ham', 123, ..., "keyword_only"),
 | 
				
			||||||
                           ('kwargs', ..., 'int', "var_keyword")),
 | 
					                           ('kwargs', ..., int, "var_keyword")),
 | 
				
			||||||
                          ...))
 | 
					                          ...))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_signature_without_self(self):
 | 
					    def test_signature_without_self(self):
 | 
				
			||||||
| 
						 | 
					@ -2666,12 +2666,12 @@ def test(a, b, c:int) -> 42:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(self.signature(partial(partial(test, 1))),
 | 
					        self.assertEqual(self.signature(partial(partial(test, 1))),
 | 
				
			||||||
                         ((('b', ..., ..., "positional_or_keyword"),
 | 
					                         ((('b', ..., ..., "positional_or_keyword"),
 | 
				
			||||||
                           ('c', ..., 'int', "positional_or_keyword")),
 | 
					                           ('c', ..., int, "positional_or_keyword")),
 | 
				
			||||||
                          '42'))
 | 
					                          42))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(self.signature(partial(partial(test, 1), 2)),
 | 
					        self.assertEqual(self.signature(partial(partial(test, 1), 2)),
 | 
				
			||||||
                         ((('c', ..., 'int', "positional_or_keyword"),),
 | 
					                         ((('c', ..., int, "positional_or_keyword"),),
 | 
				
			||||||
                          '42'))
 | 
					                          42))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        psig = inspect.signature(partial(partial(test, 1), 2))
 | 
					        psig = inspect.signature(partial(partial(test, 1), 2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2790,12 +2790,12 @@ def test(it, a, *, c) -> 'spam':
 | 
				
			||||||
                         ((('it', ..., ..., 'positional_or_keyword'),
 | 
					                         ((('it', ..., ..., 'positional_or_keyword'),
 | 
				
			||||||
                           ('a', ..., ..., 'positional_or_keyword'),
 | 
					                           ('a', ..., ..., 'positional_or_keyword'),
 | 
				
			||||||
                           ('c', 1, ..., 'keyword_only')),
 | 
					                           ('c', 1, ..., 'keyword_only')),
 | 
				
			||||||
                          repr('spam')))
 | 
					                          'spam'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(self.signature(Spam().ham),
 | 
					        self.assertEqual(self.signature(Spam().ham),
 | 
				
			||||||
                         ((('a', ..., ..., 'positional_or_keyword'),
 | 
					                         ((('a', ..., ..., 'positional_or_keyword'),
 | 
				
			||||||
                           ('c', 1, ..., 'keyword_only')),
 | 
					                           ('c', 1, ..., 'keyword_only')),
 | 
				
			||||||
                          repr('spam')))
 | 
					                          'spam'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        class Spam:
 | 
					        class Spam:
 | 
				
			||||||
            def test(self: 'anno', x):
 | 
					            def test(self: 'anno', x):
 | 
				
			||||||
| 
						 | 
					@ -2804,7 +2804,7 @@ def test(self: 'anno', x):
 | 
				
			||||||
            g = partialmethod(test, 1)
 | 
					            g = partialmethod(test, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(self.signature(Spam.g),
 | 
					        self.assertEqual(self.signature(Spam.g),
 | 
				
			||||||
                         ((('self', ..., repr('anno'), 'positional_or_keyword'),),
 | 
					                         ((('self', ..., 'anno', 'positional_or_keyword'),),
 | 
				
			||||||
                          ...))
 | 
					                          ...))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_signature_on_fake_partialmethod(self):
 | 
					    def test_signature_on_fake_partialmethod(self):
 | 
				
			||||||
| 
						 | 
					@ -3142,16 +3142,20 @@ def foo(a={}): pass
 | 
				
			||||||
        with self.assertRaisesRegex(TypeError, 'unhashable type'):
 | 
					        with self.assertRaisesRegex(TypeError, 'unhashable type'):
 | 
				
			||||||
            hash(inspect.signature(foo))
 | 
					            hash(inspect.signature(foo))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        def foo(a) -> {}: pass
 | 
				
			||||||
 | 
					        with self.assertRaisesRegex(TypeError, 'unhashable type'):
 | 
				
			||||||
 | 
					            hash(inspect.signature(foo))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_signature_str(self):
 | 
					    def test_signature_str(self):
 | 
				
			||||||
        def foo(a:int=1, *, b, c=None, **kwargs) -> 42:
 | 
					        def foo(a:int=1, *, b, c=None, **kwargs) -> 42:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
        self.assertEqual(str(inspect.signature(foo)),
 | 
					        self.assertEqual(str(inspect.signature(foo)),
 | 
				
			||||||
                         '(a: \'int\' = 1, *, b, c=None, **kwargs) -> \'42\'')
 | 
					                         '(a: int = 1, *, b, c=None, **kwargs) -> 42')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def foo(a:int=1, *args, b, c=None, **kwargs) -> 42:
 | 
					        def foo(a:int=1, *args, b, c=None, **kwargs) -> 42:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
        self.assertEqual(str(inspect.signature(foo)),
 | 
					        self.assertEqual(str(inspect.signature(foo)),
 | 
				
			||||||
                         '(a: \'int\' = 1, *args, b, c=None, **kwargs) -> \'42\'')
 | 
					                         '(a: int = 1, *args, b, c=None, **kwargs) -> 42')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def foo():
 | 
					        def foo():
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
| 
						 | 
					@ -3194,8 +3198,8 @@ def test() -> 42:
 | 
				
			||||||
        self.assertIs(sig.return_annotation, None)
 | 
					        self.assertIs(sig.return_annotation, None)
 | 
				
			||||||
        sig = sig.replace(return_annotation=sig.empty)
 | 
					        sig = sig.replace(return_annotation=sig.empty)
 | 
				
			||||||
        self.assertIs(sig.return_annotation, sig.empty)
 | 
					        self.assertIs(sig.return_annotation, sig.empty)
 | 
				
			||||||
        sig = sig.replace(return_annotation='42')
 | 
					        sig = sig.replace(return_annotation=42)
 | 
				
			||||||
        self.assertEqual(sig.return_annotation, '42')
 | 
					        self.assertEqual(sig.return_annotation, 42)
 | 
				
			||||||
        self.assertEqual(sig, inspect.signature(test))
 | 
					        self.assertEqual(sig, inspect.signature(test))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_signature_on_mangled_parameters(self):
 | 
					    def test_signature_on_mangled_parameters(self):
 | 
				
			||||||
| 
						 | 
					@ -3207,8 +3211,8 @@ class Ham(Spam):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(self.signature(Spam.foo),
 | 
					        self.assertEqual(self.signature(Spam.foo),
 | 
				
			||||||
                         ((('self', ..., ..., "positional_or_keyword"),
 | 
					                         ((('self', ..., ..., "positional_or_keyword"),
 | 
				
			||||||
                           ('_Spam__p1', 2, '1', "positional_or_keyword"),
 | 
					                           ('_Spam__p1', 2, 1, "positional_or_keyword"),
 | 
				
			||||||
                           ('_Spam__p2', 3, '2', "keyword_only")),
 | 
					                           ('_Spam__p2', 3, 2, "keyword_only")),
 | 
				
			||||||
                          ...))
 | 
					                          ...))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(self.signature(Spam.foo),
 | 
					        self.assertEqual(self.signature(Spam.foo),
 | 
				
			||||||
| 
						 | 
					@ -3253,13 +3257,13 @@ def test_signater_parameters_is_ordered(self):
 | 
				
			||||||
    def test_signature_annotations_with_local_namespaces(self):
 | 
					    def test_signature_annotations_with_local_namespaces(self):
 | 
				
			||||||
        class Foo: ...
 | 
					        class Foo: ...
 | 
				
			||||||
        def func(foo: Foo) -> int: pass
 | 
					        def func(foo: Foo) -> int: pass
 | 
				
			||||||
        def func2(foo: Foo, bar: Bar) -> int: pass
 | 
					        def func2(foo: Foo, bar: 'Bar') -> int: pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for signature_func in (inspect.signature, inspect.Signature.from_callable):
 | 
					        for signature_func in (inspect.signature, inspect.Signature.from_callable):
 | 
				
			||||||
            with self.subTest(signature_func = signature_func):
 | 
					            with self.subTest(signature_func = signature_func):
 | 
				
			||||||
                sig1 = signature_func(func)
 | 
					                sig1 = signature_func(func)
 | 
				
			||||||
                self.assertEqual(sig1.return_annotation, 'int')
 | 
					                self.assertEqual(sig1.return_annotation, int)
 | 
				
			||||||
                self.assertEqual(sig1.parameters['foo'].annotation, 'Foo')
 | 
					                self.assertEqual(sig1.parameters['foo'].annotation, Foo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                sig2 = signature_func(func, localns=locals())
 | 
					                sig2 = signature_func(func, localns=locals())
 | 
				
			||||||
                self.assertEqual(sig2.return_annotation, int)
 | 
					                self.assertEqual(sig2.return_annotation, int)
 | 
				
			||||||
| 
						 | 
					@ -3268,7 +3272,7 @@ def func2(foo: Foo, bar: Bar) -> int: pass
 | 
				
			||||||
                sig3 = signature_func(func2, globalns={'Bar': int}, localns=locals())
 | 
					                sig3 = signature_func(func2, globalns={'Bar': int}, localns=locals())
 | 
				
			||||||
                self.assertEqual(sig3.return_annotation, int)
 | 
					                self.assertEqual(sig3.return_annotation, int)
 | 
				
			||||||
                self.assertEqual(sig3.parameters['foo'].annotation, Foo)
 | 
					                self.assertEqual(sig3.parameters['foo'].annotation, Foo)
 | 
				
			||||||
                self.assertEqual(sig3.parameters['bar'].annotation, int)
 | 
					                self.assertEqual(sig3.parameters['bar'].annotation, 'Bar')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestParameterObject(unittest.TestCase):
 | 
					class TestParameterObject(unittest.TestCase):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,7 @@ class C: pass
 | 
				
			||||||
    def test_use_existing_annotations(self):
 | 
					    def test_use_existing_annotations(self):
 | 
				
			||||||
        ns = {'__annotations__': {1: 2}}
 | 
					        ns = {'__annotations__': {1: 2}}
 | 
				
			||||||
        exec('x: int', ns)
 | 
					        exec('x: int', ns)
 | 
				
			||||||
        self.assertEqual(ns['__annotations__'], {'x': 'int', 1: 2})
 | 
					        self.assertEqual(ns['__annotations__'], {'x': int, 1: 2})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_do_not_recreate_annotations(self):
 | 
					    def test_do_not_recreate_annotations(self):
 | 
				
			||||||
        # Don't rely on the existence of the '__annotations__' global.
 | 
					        # Don't rely on the existence of the '__annotations__' global.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -302,14 +302,14 @@ def inner_has_pos_only():
 | 
				
			||||||
            def f(x: int, /): ...
 | 
					            def f(x: int, /): ...
 | 
				
			||||||
            return f
 | 
					            return f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert inner_has_pos_only().__annotations__ == {'x': 'int'}
 | 
					        assert inner_has_pos_only().__annotations__ == {'x': int}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        class Something:
 | 
					        class Something:
 | 
				
			||||||
            def method(self):
 | 
					            def method(self):
 | 
				
			||||||
                def f(x: int, /): ...
 | 
					                def f(x: int, /): ...
 | 
				
			||||||
                return f
 | 
					                return f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert Something().method().__annotations__ == {'x': 'int'}
 | 
					        assert Something().method().__annotations__ == {'x': int}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def multiple_levels():
 | 
					        def multiple_levels():
 | 
				
			||||||
            def inner_has_pos_only():
 | 
					            def inner_has_pos_only():
 | 
				
			||||||
| 
						 | 
					@ -317,7 +317,7 @@ def f(x: int, /): ...
 | 
				
			||||||
                return f
 | 
					                return f
 | 
				
			||||||
            return inner_has_pos_only()
 | 
					            return inner_has_pos_only()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert multiple_levels().__annotations__ == {'x': 'int'}
 | 
					        assert multiple_levels().__annotations__ == {'x': int}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_same_keyword_as_positional_with_kwargs(self):
 | 
					    def test_same_keyword_as_positional_with_kwargs(self):
 | 
				
			||||||
        def f(something,/,**kwargs):
 | 
					        def f(something,/,**kwargs):
 | 
				
			||||||
| 
						 | 
					@ -429,6 +429,17 @@ def method(self, /):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(C().method(), sentinel)
 | 
					        self.assertEqual(C().method(), sentinel)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_annotations_constant_fold(self):
 | 
				
			||||||
 | 
					        def g():
 | 
				
			||||||
 | 
					            def f(x: not (int is int), /): ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # without constant folding we end up with
 | 
				
			||||||
 | 
					        # COMPARE_OP(is), IS_OP (0)
 | 
				
			||||||
 | 
					        # with constant folding we should expect a IS_OP (1)
 | 
				
			||||||
 | 
					        codes = [(i.opname, i.argval) for i in dis.get_instructions(g)]
 | 
				
			||||||
 | 
					        self.assertNotIn(('UNARY_NOT', None), codes)
 | 
				
			||||||
 | 
					        self.assertIn(('IS_OP', 1), codes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,7 +81,7 @@ class B(builtins.object)
 | 
				
			||||||
     |\x20\x20
 | 
					     |\x20\x20
 | 
				
			||||||
     |  NO_MEANING = 'eggs'
 | 
					     |  NO_MEANING = 'eggs'
 | 
				
			||||||
     |\x20\x20
 | 
					     |\x20\x20
 | 
				
			||||||
     |  __annotations__ = {'NO_MEANING': 'str'}
 | 
					     |  __annotations__ = {'NO_MEANING': <class 'str'>}
 | 
				
			||||||
\x20\x20\x20\x20
 | 
					\x20\x20\x20\x20
 | 
				
			||||||
    class C(builtins.object)
 | 
					    class C(builtins.object)
 | 
				
			||||||
     |  Methods defined here:
 | 
					     |  Methods defined here:
 | 
				
			||||||
| 
						 | 
					@ -194,7 +194,7 @@ class C(builtins.object)
 | 
				
			||||||
Data and other attributes defined here:<br>
 | 
					Data and other attributes defined here:<br>
 | 
				
			||||||
<dl><dt><strong>NO_MEANING</strong> = 'eggs'</dl>
 | 
					<dl><dt><strong>NO_MEANING</strong> = 'eggs'</dl>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<dl><dt><strong>__annotations__</strong> = {'NO_MEANING': 'str'}</dl>
 | 
					<dl><dt><strong>__annotations__</strong> = {'NO_MEANING': <class 'str'>}</dl>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</td></tr></table> <p>
 | 
					</td></tr></table> <p>
 | 
				
			||||||
<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
 | 
					<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1018,6 +1018,14 @@
 | 
				
			||||||
    Traceback (most recent call last):
 | 
					    Traceback (most recent call last):
 | 
				
			||||||
    SyntaxError: cannot assign to __debug__
 | 
					    SyntaxError: cannot assign to __debug__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    >>> def f(*args:(lambda __debug__:0)): pass
 | 
				
			||||||
 | 
					    Traceback (most recent call last):
 | 
				
			||||||
 | 
					    SyntaxError: cannot assign to __debug__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    >>> def f(**kwargs:(lambda __debug__:0)): pass
 | 
				
			||||||
 | 
					    Traceback (most recent call last):
 | 
				
			||||||
 | 
					    SyntaxError: cannot assign to __debug__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    >>> with (lambda *:0): pass
 | 
					    >>> with (lambda *:0): pass
 | 
				
			||||||
    Traceback (most recent call last):
 | 
					    Traceback (most recent call last):
 | 
				
			||||||
    SyntaxError: named arguments must follow bare *
 | 
					    SyntaxError: named arguments must follow bare *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -671,8 +671,8 @@ def test_or_type_operator_with_forward(self):
 | 
				
			||||||
        ForwardBefore = 'Forward' | T
 | 
					        ForwardBefore = 'Forward' | T
 | 
				
			||||||
        def forward_after(x: ForwardAfter[int]) -> None: ...
 | 
					        def forward_after(x: ForwardAfter[int]) -> None: ...
 | 
				
			||||||
        def forward_before(x: ForwardBefore[int]) -> None: ...
 | 
					        def forward_before(x: ForwardBefore[int]) -> None: ...
 | 
				
			||||||
        assert typing.get_args(typing.get_type_hints(forward_after, localns=locals())['x']) == (int, Forward)
 | 
					        assert typing.get_args(typing.get_type_hints(forward_after)['x']) == (int, Forward)
 | 
				
			||||||
        assert typing.get_args(typing.get_type_hints(forward_before, localns=locals())['x']) == (int, Forward)
 | 
					        assert typing.get_args(typing.get_type_hints(forward_before)['x']) == (int, Forward)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_or_type_operator_with_Protocol(self):
 | 
					    def test_or_type_operator_with_Protocol(self):
 | 
				
			||||||
        class Proto(typing.Protocol):
 | 
					        class Proto(typing.Protocol):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -363,7 +363,7 @@ def test_empty(self):
 | 
				
			||||||
    def test_no_eval_union(self):
 | 
					    def test_no_eval_union(self):
 | 
				
			||||||
        u = Union[int, str]
 | 
					        u = Union[int, str]
 | 
				
			||||||
        def f(x: u): ...
 | 
					        def f(x: u): ...
 | 
				
			||||||
        self.assertIs(get_type_hints(f, globals(), locals())['x'], u)
 | 
					        self.assertIs(get_type_hints(f)['x'], u)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_function_repr_union(self):
 | 
					    def test_function_repr_union(self):
 | 
				
			||||||
        def fun() -> int: ...
 | 
					        def fun() -> int: ...
 | 
				
			||||||
| 
						 | 
					@ -2876,7 +2876,7 @@ def test_get_type_hints_classes(self):
 | 
				
			||||||
        self.assertEqual(gth(HasForeignBaseClass),
 | 
					        self.assertEqual(gth(HasForeignBaseClass),
 | 
				
			||||||
                         {'some_xrepr': XRepr, 'other_a': mod_generics_cache.A,
 | 
					                         {'some_xrepr': XRepr, 'other_a': mod_generics_cache.A,
 | 
				
			||||||
                          'some_b': mod_generics_cache.B})
 | 
					                          'some_b': mod_generics_cache.B})
 | 
				
			||||||
        self.assertEqual(gth(XRepr),
 | 
					        self.assertEqual(gth(XRepr.__new__),
 | 
				
			||||||
                         {'x': int, 'y': int})
 | 
					                         {'x': int, 'y': int})
 | 
				
			||||||
        self.assertEqual(gth(mod_generics_cache.B),
 | 
					        self.assertEqual(gth(mod_generics_cache.B),
 | 
				
			||||||
                         {'my_inner_a1': mod_generics_cache.B.A,
 | 
					                         {'my_inner_a1': mod_generics_cache.B.A,
 | 
				
			||||||
| 
						 | 
					@ -3689,7 +3689,7 @@ def test_annotation_usage(self):
 | 
				
			||||||
        self.assertEqual(tim.cool, 9000)
 | 
					        self.assertEqual(tim.cool, 9000)
 | 
				
			||||||
        self.assertEqual(CoolEmployee.__name__, 'CoolEmployee')
 | 
					        self.assertEqual(CoolEmployee.__name__, 'CoolEmployee')
 | 
				
			||||||
        self.assertEqual(CoolEmployee._fields, ('name', 'cool'))
 | 
					        self.assertEqual(CoolEmployee._fields, ('name', 'cool'))
 | 
				
			||||||
        self.assertEqual(gth(CoolEmployee),
 | 
					        self.assertEqual(CoolEmployee.__annotations__,
 | 
				
			||||||
                         collections.OrderedDict(name=str, cool=int))
 | 
					                         collections.OrderedDict(name=str, cool=int))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_annotation_usage_with_default(self):
 | 
					    def test_annotation_usage_with_default(self):
 | 
				
			||||||
| 
						 | 
					@ -3703,7 +3703,7 @@ def test_annotation_usage_with_default(self):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(CoolEmployeeWithDefault.__name__, 'CoolEmployeeWithDefault')
 | 
					        self.assertEqual(CoolEmployeeWithDefault.__name__, 'CoolEmployeeWithDefault')
 | 
				
			||||||
        self.assertEqual(CoolEmployeeWithDefault._fields, ('name', 'cool'))
 | 
					        self.assertEqual(CoolEmployeeWithDefault._fields, ('name', 'cool'))
 | 
				
			||||||
        self.assertEqual(gth(CoolEmployeeWithDefault),
 | 
					        self.assertEqual(CoolEmployeeWithDefault.__annotations__,
 | 
				
			||||||
                         dict(name=str, cool=int))
 | 
					                         dict(name=str, cool=int))
 | 
				
			||||||
        self.assertEqual(CoolEmployeeWithDefault._field_defaults, dict(cool=0))
 | 
					        self.assertEqual(CoolEmployeeWithDefault._field_defaults, dict(cool=0))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3871,7 +3871,7 @@ def test_typeddict_errors(self):
 | 
				
			||||||
    def test_py36_class_syntax_usage(self):
 | 
					    def test_py36_class_syntax_usage(self):
 | 
				
			||||||
        self.assertEqual(LabelPoint2D.__name__, 'LabelPoint2D')
 | 
					        self.assertEqual(LabelPoint2D.__name__, 'LabelPoint2D')
 | 
				
			||||||
        self.assertEqual(LabelPoint2D.__module__, __name__)
 | 
					        self.assertEqual(LabelPoint2D.__module__, __name__)
 | 
				
			||||||
        self.assertEqual(gth(LabelPoint2D), {'x': int, 'y': int, 'label': str})
 | 
					        self.assertEqual(LabelPoint2D.__annotations__, {'x': int, 'y': int, 'label': str})
 | 
				
			||||||
        self.assertEqual(LabelPoint2D.__bases__, (dict,))
 | 
					        self.assertEqual(LabelPoint2D.__bases__, (dict,))
 | 
				
			||||||
        self.assertEqual(LabelPoint2D.__total__, True)
 | 
					        self.assertEqual(LabelPoint2D.__total__, True)
 | 
				
			||||||
        self.assertNotIsSubclass(LabelPoint2D, typing.Sequence)
 | 
					        self.assertNotIsSubclass(LabelPoint2D, typing.Sequence)
 | 
				
			||||||
| 
						 | 
					@ -3934,11 +3934,11 @@ class Cat(Animal):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert BaseAnimal.__required_keys__ == frozenset(['name'])
 | 
					        assert BaseAnimal.__required_keys__ == frozenset(['name'])
 | 
				
			||||||
        assert BaseAnimal.__optional_keys__ == frozenset([])
 | 
					        assert BaseAnimal.__optional_keys__ == frozenset([])
 | 
				
			||||||
        assert gth(BaseAnimal) == {'name': str}
 | 
					        assert BaseAnimal.__annotations__ == {'name': str}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert Animal.__required_keys__ == frozenset(['name'])
 | 
					        assert Animal.__required_keys__ == frozenset(['name'])
 | 
				
			||||||
        assert Animal.__optional_keys__ == frozenset(['tail', 'voice'])
 | 
					        assert Animal.__optional_keys__ == frozenset(['tail', 'voice'])
 | 
				
			||||||
        assert gth(Animal) == {
 | 
					        assert Animal.__annotations__ == {
 | 
				
			||||||
            'name': str,
 | 
					            'name': str,
 | 
				
			||||||
            'tail': bool,
 | 
					            'tail': bool,
 | 
				
			||||||
            'voice': str,
 | 
					            'voice': str,
 | 
				
			||||||
| 
						 | 
					@ -3946,7 +3946,7 @@ class Cat(Animal):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert Cat.__required_keys__ == frozenset(['name', 'fur_color'])
 | 
					        assert Cat.__required_keys__ == frozenset(['name', 'fur_color'])
 | 
				
			||||||
        assert Cat.__optional_keys__ == frozenset(['tail', 'voice'])
 | 
					        assert Cat.__optional_keys__ == frozenset(['tail', 'voice'])
 | 
				
			||||||
        assert gth(Cat) == {
 | 
					        assert Cat.__annotations__ == {
 | 
				
			||||||
            'fur_color': str,
 | 
					            'fur_color': str,
 | 
				
			||||||
            'name': str,
 | 
					            'name': str,
 | 
				
			||||||
            'tail': bool,
 | 
					            'tail': bool,
 | 
				
			||||||
| 
						 | 
					@ -3967,7 +3967,7 @@ def test_io(self):
 | 
				
			||||||
        def stuff(a: IO) -> AnyStr:
 | 
					        def stuff(a: IO) -> AnyStr:
 | 
				
			||||||
            return a.readline()
 | 
					            return a.readline()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        a = gth(stuff)['a']
 | 
					        a = stuff.__annotations__['a']
 | 
				
			||||||
        self.assertEqual(a.__parameters__, (AnyStr,))
 | 
					        self.assertEqual(a.__parameters__, (AnyStr,))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_textio(self):
 | 
					    def test_textio(self):
 | 
				
			||||||
| 
						 | 
					@ -3975,7 +3975,7 @@ def test_textio(self):
 | 
				
			||||||
        def stuff(a: TextIO) -> str:
 | 
					        def stuff(a: TextIO) -> str:
 | 
				
			||||||
            return a.readline()
 | 
					            return a.readline()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        a = gth(stuff)['a']
 | 
					        a = stuff.__annotations__['a']
 | 
				
			||||||
        self.assertEqual(a.__parameters__, ())
 | 
					        self.assertEqual(a.__parameters__, ())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_binaryio(self):
 | 
					    def test_binaryio(self):
 | 
				
			||||||
| 
						 | 
					@ -3983,7 +3983,7 @@ def test_binaryio(self):
 | 
				
			||||||
        def stuff(a: BinaryIO) -> bytes:
 | 
					        def stuff(a: BinaryIO) -> bytes:
 | 
				
			||||||
            return a.readline()
 | 
					            return a.readline()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        a = gth(stuff)['a']
 | 
					        a = stuff.__annotations__['a']
 | 
				
			||||||
        self.assertEqual(a.__parameters__, ())
 | 
					        self.assertEqual(a.__parameters__, ())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_io_submodule(self):
 | 
					    def test_io_submodule(self):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -577,13 +577,6 @@ class ForwardRef(_Final, _root=True):
 | 
				
			||||||
    def __init__(self, arg, is_argument=True):
 | 
					    def __init__(self, arg, is_argument=True):
 | 
				
			||||||
        if not isinstance(arg, str):
 | 
					        if not isinstance(arg, str):
 | 
				
			||||||
            raise TypeError(f"Forward reference must be a string -- got {arg!r}")
 | 
					            raise TypeError(f"Forward reference must be a string -- got {arg!r}")
 | 
				
			||||||
 | 
					 | 
				
			||||||
        # Double-stringified forward references is a result of activating
 | 
					 | 
				
			||||||
        # the 'annotations' future by default. This way, we eliminate them in
 | 
					 | 
				
			||||||
        # the runtime.
 | 
					 | 
				
			||||||
        if arg.startswith(("'", '\"')) and arg.endswith(("'", '"')):
 | 
					 | 
				
			||||||
            arg = arg[1:-1]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            code = compile(arg, '<string>', 'eval')
 | 
					            code = compile(arg, '<string>', 'eval')
 | 
				
			||||||
        except SyntaxError:
 | 
					        except SyntaxError:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					Revert making ``from __future__ import annotations`` the default. This follows
 | 
				
			||||||
 | 
					the Steering Council decision to postpone PEP 563 changes to at least Python
 | 
				
			||||||
 | 
					3.11. See the original email for more information regarding the decision:
 | 
				
			||||||
 | 
					https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/.
 | 
				
			||||||
 | 
					Patch by Pablo Galindo.
 | 
				
			||||||
| 
						 | 
					@ -406,6 +406,7 @@ static int astfold_expr(expr_ty node_, PyArena *ctx_, _PyASTOptimizeState *state
 | 
				
			||||||
static int astfold_arguments(arguments_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
					static int astfold_arguments(arguments_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
				
			||||||
static int astfold_comprehension(comprehension_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
					static int astfold_comprehension(comprehension_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
				
			||||||
static int astfold_keyword(keyword_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
					static int astfold_keyword(keyword_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
				
			||||||
 | 
					static int astfold_arg(arg_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
				
			||||||
static int astfold_withitem(withitem_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
					static int astfold_withitem(withitem_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
				
			||||||
static int astfold_excepthandler(excepthandler_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
					static int astfold_excepthandler(excepthandler_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
				
			||||||
static int astfold_match_case(match_case_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
					static int astfold_match_case(match_case_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
 | 
				
			||||||
| 
						 | 
					@ -625,11 +626,25 @@ astfold_comprehension(comprehension_ty node_, PyArena *ctx_, _PyASTOptimizeState
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
astfold_arguments(arguments_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
 | 
					astfold_arguments(arguments_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    CALL_SEQ(astfold_arg, arg, node_->posonlyargs);
 | 
				
			||||||
 | 
					    CALL_SEQ(astfold_arg, arg, node_->args);
 | 
				
			||||||
 | 
					    CALL_OPT(astfold_arg, arg_ty, node_->vararg);
 | 
				
			||||||
 | 
					    CALL_SEQ(astfold_arg, arg, node_->kwonlyargs);
 | 
				
			||||||
    CALL_SEQ(astfold_expr, expr, node_->kw_defaults);
 | 
					    CALL_SEQ(astfold_expr, expr, node_->kw_defaults);
 | 
				
			||||||
 | 
					    CALL_OPT(astfold_arg, arg_ty, node_->kwarg);
 | 
				
			||||||
    CALL_SEQ(astfold_expr, expr, node_->defaults);
 | 
					    CALL_SEQ(astfold_expr, expr, node_->defaults);
 | 
				
			||||||
    return 1;
 | 
					    return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int
 | 
				
			||||||
 | 
					astfold_arg(arg_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (!(state->ff_features & CO_FUTURE_ANNOTATIONS)) {
 | 
				
			||||||
 | 
					        CALL_OPT(astfold_expr, expr_ty, node_->annotation);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
astfold_stmt(stmt_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
 | 
					astfold_stmt(stmt_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -638,11 +653,17 @@ astfold_stmt(stmt_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
 | 
				
			||||||
        CALL(astfold_arguments, arguments_ty, node_->v.FunctionDef.args);
 | 
					        CALL(astfold_arguments, arguments_ty, node_->v.FunctionDef.args);
 | 
				
			||||||
        CALL(astfold_body, asdl_seq, node_->v.FunctionDef.body);
 | 
					        CALL(astfold_body, asdl_seq, node_->v.FunctionDef.body);
 | 
				
			||||||
        CALL_SEQ(astfold_expr, expr, node_->v.FunctionDef.decorator_list);
 | 
					        CALL_SEQ(astfold_expr, expr, node_->v.FunctionDef.decorator_list);
 | 
				
			||||||
 | 
					        if (!(state->ff_features & CO_FUTURE_ANNOTATIONS)) {
 | 
				
			||||||
 | 
					            CALL_OPT(astfold_expr, expr_ty, node_->v.FunctionDef.returns);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case AsyncFunctionDef_kind:
 | 
					    case AsyncFunctionDef_kind:
 | 
				
			||||||
        CALL(astfold_arguments, arguments_ty, node_->v.AsyncFunctionDef.args);
 | 
					        CALL(astfold_arguments, arguments_ty, node_->v.AsyncFunctionDef.args);
 | 
				
			||||||
        CALL(astfold_body, asdl_seq, node_->v.AsyncFunctionDef.body);
 | 
					        CALL(astfold_body, asdl_seq, node_->v.AsyncFunctionDef.body);
 | 
				
			||||||
        CALL_SEQ(astfold_expr, expr, node_->v.AsyncFunctionDef.decorator_list);
 | 
					        CALL_SEQ(astfold_expr, expr, node_->v.AsyncFunctionDef.decorator_list);
 | 
				
			||||||
 | 
					        if (!(state->ff_features & CO_FUTURE_ANNOTATIONS)) {
 | 
				
			||||||
 | 
					            CALL_OPT(astfold_expr, expr_ty, node_->v.AsyncFunctionDef.returns);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case ClassDef_kind:
 | 
					    case ClassDef_kind:
 | 
				
			||||||
        CALL_SEQ(astfold_expr, expr, node_->v.ClassDef.bases);
 | 
					        CALL_SEQ(astfold_expr, expr, node_->v.ClassDef.bases);
 | 
				
			||||||
| 
						 | 
					@ -666,6 +687,9 @@ astfold_stmt(stmt_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case AnnAssign_kind:
 | 
					    case AnnAssign_kind:
 | 
				
			||||||
        CALL(astfold_expr, expr_ty, node_->v.AnnAssign.target);
 | 
					        CALL(astfold_expr, expr_ty, node_->v.AnnAssign.target);
 | 
				
			||||||
 | 
					        if (!(state->ff_features & CO_FUTURE_ANNOTATIONS)) {
 | 
				
			||||||
 | 
					            CALL(astfold_expr, expr_ty, node_->v.AnnAssign.annotation);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        CALL_OPT(astfold_expr, expr_ty, node_->v.AnnAssign.value);
 | 
					        CALL_OPT(astfold_expr, expr_ty, node_->v.AnnAssign.value);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case For_kind:
 | 
					    case For_kind:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2111,16 +2111,24 @@ static int
 | 
				
			||||||
compiler_visit_argannotation(struct compiler *c, identifier id,
 | 
					compiler_visit_argannotation(struct compiler *c, identifier id,
 | 
				
			||||||
    expr_ty annotation, Py_ssize_t *annotations_len)
 | 
					    expr_ty annotation, Py_ssize_t *annotations_len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (annotation) {
 | 
					    if (!annotation) {
 | 
				
			||||||
        PyObject *mangled = _Py_Mangle(c->u->u_private, id);
 | 
					        return 1;
 | 
				
			||||||
        if (!mangled)
 | 
					    }
 | 
				
			||||||
            return 0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PyObject *mangled = _Py_Mangle(c->u->u_private, id);
 | 
				
			||||||
 | 
					    if (!mangled) {
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    ADDOP_LOAD_CONST(c, mangled);
 | 
					    ADDOP_LOAD_CONST(c, mangled);
 | 
				
			||||||
    Py_DECREF(mangled);
 | 
					    Py_DECREF(mangled);
 | 
				
			||||||
        VISIT(c, annexpr, annotation);
 | 
					
 | 
				
			||||||
        *annotations_len += 2;
 | 
					    if (c->c_future->ff_features & CO_FUTURE_ANNOTATIONS) {
 | 
				
			||||||
 | 
					        VISIT(c, annexpr, annotation)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        VISIT(c, expr, annotation);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    *annotations_len += 2;
 | 
				
			||||||
    return 1;
 | 
					    return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5403,7 +5411,12 @@ compiler_annassign(struct compiler *c, stmt_ty s)
 | 
				
			||||||
        if (s->v.AnnAssign.simple &&
 | 
					        if (s->v.AnnAssign.simple &&
 | 
				
			||||||
            (c->u->u_scope_type == COMPILER_SCOPE_MODULE ||
 | 
					            (c->u->u_scope_type == COMPILER_SCOPE_MODULE ||
 | 
				
			||||||
             c->u->u_scope_type == COMPILER_SCOPE_CLASS)) {
 | 
					             c->u->u_scope_type == COMPILER_SCOPE_CLASS)) {
 | 
				
			||||||
            VISIT(c, annexpr, s->v.AnnAssign.annotation);
 | 
					            if (c->c_future->ff_features & CO_FUTURE_ANNOTATIONS) {
 | 
				
			||||||
 | 
					                VISIT(c, annexpr, s->v.AnnAssign.annotation)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                VISIT(c, expr, s->v.AnnAssign.annotation);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            ADDOP_NAME(c, LOAD_NAME, __annotations__, names);
 | 
					            ADDOP_NAME(c, LOAD_NAME, __annotations__, names);
 | 
				
			||||||
            mangled = _Py_Mangle(c->u->u_private, targ->v.Name.id);
 | 
					            mangled = _Py_Mangle(c->u->u_private, targ->v.Name.id);
 | 
				
			||||||
            ADDOP_LOAD_CONST_NEW(c, mangled);
 | 
					            ADDOP_LOAD_CONST_NEW(c, mangled);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,7 +37,7 @@ future_check_features(PyFutureFeatures *ff, stmt_ty s, PyObject *filename)
 | 
				
			||||||
        } else if (strcmp(feature, FUTURE_GENERATOR_STOP) == 0) {
 | 
					        } else if (strcmp(feature, FUTURE_GENERATOR_STOP) == 0) {
 | 
				
			||||||
            continue;
 | 
					            continue;
 | 
				
			||||||
        } else if (strcmp(feature, FUTURE_ANNOTATIONS) == 0) {
 | 
					        } else if (strcmp(feature, FUTURE_ANNOTATIONS) == 0) {
 | 
				
			||||||
            continue;
 | 
					            ff->ff_features |= CO_FUTURE_ANNOTATIONS;
 | 
				
			||||||
        } else if (strcmp(feature, "braces") == 0) {
 | 
					        } else if (strcmp(feature, "braces") == 0) {
 | 
				
			||||||
            PyErr_SetString(PyExc_SyntaxError,
 | 
					            PyErr_SetString(PyExc_SyntaxError,
 | 
				
			||||||
                            "not a chance");
 | 
					                            "not a chance");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										220
									
								
								Python/importlib_external.h
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										220
									
								
								Python/importlib_external.h
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -359,7 +359,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    99,185,0,0,0,115,38,0,0,0,16,5,6,1,22,1,
 | 
					    99,185,0,0,0,115,38,0,0,0,16,5,6,1,22,1,
 | 
				
			||||||
    4,255,2,2,14,3,24,1,16,128,18,1,12,1,2,1,
 | 
					    4,255,2,2,14,3,24,1,16,128,18,1,12,1,2,1,
 | 
				
			||||||
    12,1,2,3,12,254,2,1,2,1,2,254,2,253,255,128,
 | 
					    12,1,2,3,12,254,2,1,2,1,2,254,2,253,255,128,
 | 
				
			||||||
    114,95,0,0,0,105,108,13,0,0,114,44,0,0,0,114,
 | 
					    114,95,0,0,0,105,109,13,0,0,114,44,0,0,0,114,
 | 
				
			||||||
    32,0,0,0,115,2,0,0,0,13,10,90,11,95,95,112,
 | 
					    32,0,0,0,115,2,0,0,0,13,10,90,11,95,95,112,
 | 
				
			||||||
    121,99,97,99,104,101,95,95,122,4,111,112,116,45,122,3,
 | 
					    121,99,97,99,104,101,95,95,122,4,111,112,116,45,122,3,
 | 
				
			||||||
    46,112,121,122,4,46,112,121,119,122,4,46,112,121,99,41,
 | 
					    46,112,121,122,4,46,112,121,119,122,4,46,112,121,99,41,
 | 
				
			||||||
| 
						 | 
					@ -473,7 +473,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    103,90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,
 | 
					    103,90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,
 | 
				
			||||||
    109,101,218,8,102,105,108,101,110,97,109,101,114,7,0,0,
 | 
					    109,101,218,8,102,105,108,101,110,97,109,101,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,8,0,0,0,218,17,99,97,99,
 | 
					    0,114,7,0,0,0,114,8,0,0,0,218,17,99,97,99,
 | 
				
			||||||
    104,101,95,102,114,111,109,95,115,111,117,114,99,101,121,1,
 | 
					    104,101,95,102,114,111,109,95,115,111,117,114,99,101,122,1,
 | 
				
			||||||
    0,0,115,74,0,0,0,8,18,6,1,2,1,4,255,8,
 | 
					    0,0,115,74,0,0,0,8,18,6,1,2,1,4,255,8,
 | 
				
			||||||
    2,4,1,8,1,12,1,10,1,12,1,16,1,8,1,8,
 | 
					    2,4,1,8,1,12,1,10,1,12,1,16,1,8,1,8,
 | 
				
			||||||
    1,8,1,24,1,8,1,12,1,6,1,8,2,8,1,8,
 | 
					    1,8,1,24,1,8,1,12,1,6,1,8,2,8,1,8,
 | 
				
			||||||
| 
						 | 
					@ -554,7 +554,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,90,9,111,112,116,95,108,101,118,101,108,90,13,98,
 | 
					    0,0,90,9,111,112,116,95,108,101,118,101,108,90,13,98,
 | 
				
			||||||
    97,115,101,95,102,105,108,101,110,97,109,101,114,7,0,0,
 | 
					    97,115,101,95,102,105,108,101,110,97,109,101,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,8,0,0,0,218,17,115,111,117,
 | 
					    0,114,7,0,0,0,114,8,0,0,0,218,17,115,111,117,
 | 
				
			||||||
    114,99,101,95,102,114,111,109,95,99,97,99,104,101,192,1,
 | 
					    114,99,101,95,102,114,111,109,95,99,97,99,104,101,193,1,
 | 
				
			||||||
    0,0,115,62,0,0,0,12,9,8,1,10,1,12,1,4,
 | 
					    0,0,115,62,0,0,0,12,9,8,1,10,1,12,1,4,
 | 
				
			||||||
    1,10,1,12,1,14,1,16,1,4,1,4,1,12,1,8,
 | 
					    1,10,1,12,1,14,1,16,1,4,1,4,1,12,1,8,
 | 
				
			||||||
    1,8,1,2,1,8,255,10,2,8,1,14,1,8,1,16,
 | 
					    1,8,1,2,1,8,255,10,2,8,1,14,1,8,1,16,
 | 
				
			||||||
| 
						 | 
					@ -590,7 +590,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    101,110,115,105,111,110,218,11,115,111,117,114,99,101,95,112,
 | 
					    101,110,115,105,111,110,218,11,115,111,117,114,99,101,95,112,
 | 
				
			||||||
    97,116,104,114,7,0,0,0,114,7,0,0,0,114,8,0,
 | 
					    97,116,104,114,7,0,0,0,114,7,0,0,0,114,8,0,
 | 
				
			||||||
    0,0,218,15,95,103,101,116,95,115,111,117,114,99,101,102,
 | 
					    0,0,218,15,95,103,101,116,95,115,111,117,114,99,101,102,
 | 
				
			||||||
    105,108,101,232,1,0,0,115,24,0,0,0,12,7,4,1,
 | 
					    105,108,101,233,1,0,0,115,24,0,0,0,12,7,4,1,
 | 
				
			||||||
    16,1,24,1,4,1,2,1,12,1,16,1,14,1,16,1,
 | 
					    16,1,24,1,4,1,2,1,12,1,16,1,14,1,16,1,
 | 
				
			||||||
    2,254,255,128,114,135,0,0,0,99,1,0,0,0,0,0,
 | 
					    2,254,255,128,114,135,0,0,0,99,1,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,
 | 
					    0,0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,
 | 
				
			||||||
| 
						 | 
					@ -603,7 +603,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,114,121,0,0,0,114,107,0,0,0,114,113,0,
 | 
					    0,0,0,114,121,0,0,0,114,107,0,0,0,114,113,0,
 | 
				
			||||||
    0,0,41,1,114,120,0,0,0,114,7,0,0,0,114,7,
 | 
					    0,0,41,1,114,120,0,0,0,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,218,11,95,103,101,116,95,99,
 | 
					    0,0,0,114,8,0,0,0,218,11,95,103,101,116,95,99,
 | 
				
			||||||
    97,99,104,101,100,251,1,0,0,115,20,0,0,0,14,1,
 | 
					    97,99,104,101,100,252,1,0,0,115,20,0,0,0,14,1,
 | 
				
			||||||
    2,1,10,1,12,1,6,1,14,1,4,1,4,2,2,251,
 | 
					    2,1,10,1,12,1,6,1,14,1,4,1,4,2,2,251,
 | 
				
			||||||
    255,128,114,137,0,0,0,99,1,0,0,0,0,0,0,0,
 | 
					    255,128,114,137,0,0,0,99,1,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,
 | 
					    0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -617,7 +617,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,233,128,0,0,0,78,41,3,114,75,0,0,0,114,77,
 | 
					    0,233,128,0,0,0,78,41,3,114,75,0,0,0,114,77,
 | 
				
			||||||
    0,0,0,114,76,0,0,0,41,2,114,65,0,0,0,114,
 | 
					    0,0,0,114,76,0,0,0,41,2,114,65,0,0,0,114,
 | 
				
			||||||
    78,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
					    78,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,218,10,95,99,97,108,99,95,109,111,100,101,7,
 | 
					    0,0,0,218,10,95,99,97,108,99,95,109,111,100,101,8,
 | 
				
			||||||
    2,0,0,115,16,0,0,0,2,2,14,1,12,1,6,1,
 | 
					    2,0,0,115,16,0,0,0,2,2,14,1,12,1,6,1,
 | 
				
			||||||
    8,3,4,1,2,251,255,128,114,139,0,0,0,99,1,0,
 | 
					    8,3,4,1,2,251,255,128,114,139,0,0,0,99,1,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,
 | 
					    0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,
 | 
				
			||||||
| 
						 | 
					@ -655,7 +655,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,218,4,97,114,103,115,218,6,107,119,97,114,103,115,
 | 
					    0,0,218,4,97,114,103,115,218,6,107,119,97,114,103,115,
 | 
				
			||||||
    169,1,218,6,109,101,116,104,111,100,114,7,0,0,0,114,
 | 
					    169,1,218,6,109,101,116,104,111,100,114,7,0,0,0,114,
 | 
				
			||||||
    8,0,0,0,218,19,95,99,104,101,99,107,95,110,97,109,
 | 
					    8,0,0,0,218,19,95,99,104,101,99,107,95,110,97,109,
 | 
				
			||||||
    101,95,119,114,97,112,112,101,114,27,2,0,0,115,20,0,
 | 
					    101,95,119,114,97,112,112,101,114,28,2,0,0,115,20,0,
 | 
				
			||||||
    0,0,8,1,8,1,10,1,4,1,8,1,2,255,2,1,
 | 
					    0,0,8,1,8,1,10,1,4,1,8,1,2,255,2,1,
 | 
				
			||||||
    6,255,24,2,255,128,122,40,95,99,104,101,99,107,95,110,
 | 
					    6,255,24,2,255,128,122,40,95,99,104,101,99,107,95,110,
 | 
				
			||||||
    97,109,101,46,60,108,111,99,97,108,115,62,46,95,99,104,
 | 
					    97,109,101,46,60,108,111,99,97,108,115,62,46,95,99,104,
 | 
				
			||||||
| 
						 | 
					@ -673,7 +673,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    116,97,116,116,114,218,8,95,95,100,105,99,116,95,95,218,
 | 
					    116,97,116,116,114,218,8,95,95,100,105,99,116,95,95,218,
 | 
				
			||||||
    6,117,112,100,97,116,101,41,3,90,3,110,101,119,90,3,
 | 
					    6,117,112,100,97,116,101,41,3,90,3,110,101,119,90,3,
 | 
				
			||||||
    111,108,100,114,85,0,0,0,114,7,0,0,0,114,7,0,
 | 
					    111,108,100,114,85,0,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,218,5,95,119,114,97,112,40,2,
 | 
					    0,0,114,8,0,0,0,218,5,95,119,114,97,112,41,2,
 | 
				
			||||||
    0,0,115,12,0,0,0,8,1,10,1,18,1,2,128,18,
 | 
					    0,0,115,12,0,0,0,8,1,10,1,18,1,2,128,18,
 | 
				
			||||||
    1,255,128,122,26,95,99,104,101,99,107,95,110,97,109,101,
 | 
					    1,255,128,122,26,95,99,104,101,99,107,95,110,97,109,101,
 | 
				
			||||||
    46,60,108,111,99,97,108,115,62,46,95,119,114,97,112,114,
 | 
					    46,60,108,111,99,97,108,115,62,46,95,119,114,97,112,114,
 | 
				
			||||||
| 
						 | 
					@ -681,7 +681,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    97,112,114,158,0,0,0,41,3,114,147,0,0,0,114,148,
 | 
					    97,112,114,158,0,0,0,41,3,114,147,0,0,0,114,148,
 | 
				
			||||||
    0,0,0,114,158,0,0,0,114,7,0,0,0,114,146,0,
 | 
					    0,0,0,114,158,0,0,0,114,7,0,0,0,114,146,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,218,11,95,99,104,101,99,107,95,
 | 
					    0,0,114,8,0,0,0,218,11,95,99,104,101,99,107,95,
 | 
				
			||||||
    110,97,109,101,19,2,0,0,115,14,0,0,0,14,8,8,
 | 
					    110,97,109,101,20,2,0,0,115,14,0,0,0,14,8,8,
 | 
				
			||||||
    10,8,1,8,2,10,6,4,1,255,128,114,160,0,0,0,
 | 
					    10,8,1,8,2,10,6,4,1,255,128,114,160,0,0,0,
 | 
				
			||||||
    99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
 | 
					    99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
 | 
				
			||||||
    0,6,0,0,0,67,0,0,0,115,72,0,0,0,116,0,
 | 
					    0,6,0,0,0,67,0,0,0,115,72,0,0,0,116,0,
 | 
				
			||||||
| 
						 | 
					@ -716,7 +716,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    111,97,100,101,114,218,8,112,111,114,116,105,111,110,115,218,
 | 
					    111,97,100,101,114,218,8,112,111,114,116,105,111,110,115,218,
 | 
				
			||||||
    3,109,115,103,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
					    3,109,115,103,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,218,17,95,102,105,110,100,95,109,111,100,117,108,
 | 
					    0,0,0,218,17,95,102,105,110,100,95,109,111,100,117,108,
 | 
				
			||||||
    101,95,115,104,105,109,50,2,0,0,115,18,0,0,0,6,
 | 
					    101,95,115,104,105,109,51,2,0,0,115,18,0,0,0,6,
 | 
				
			||||||
    7,2,2,4,254,14,6,16,1,4,1,22,1,4,1,255,
 | 
					    7,2,2,4,254,14,6,16,1,4,1,22,1,4,1,255,
 | 
				
			||||||
    128,114,167,0,0,0,99,3,0,0,0,0,0,0,0,0,
 | 
					    128,114,167,0,0,0,99,3,0,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115,
 | 
					    0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115,
 | 
				
			||||||
| 
						 | 
					@ -784,7 +784,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    115,90,5,109,97,103,105,99,114,117,0,0,0,114,16,0,
 | 
					    115,90,5,109,97,103,105,99,114,117,0,0,0,114,16,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
					    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,218,13,95,99,108,97,115,115,105,102,121,95,112,121,99,
 | 
					    0,218,13,95,99,108,97,115,115,105,102,121,95,112,121,99,
 | 
				
			||||||
    70,2,0,0,115,30,0,0,0,12,16,8,1,16,1,12,
 | 
					    71,2,0,0,115,30,0,0,0,12,16,8,1,16,1,12,
 | 
				
			||||||
    1,16,1,12,1,10,1,12,1,8,1,16,1,8,2,16,
 | 
					    1,16,1,12,1,10,1,12,1,8,1,16,1,8,2,16,
 | 
				
			||||||
    1,16,1,4,1,255,128,114,176,0,0,0,99,5,0,0,
 | 
					    1,16,1,4,1,255,128,114,176,0,0,0,99,5,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0,
 | 
					    0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0,
 | 
				
			||||||
| 
						 | 
					@ -839,7 +839,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,114,175,0,0,0,114,117,0,0,0,114,7,0,
 | 
					    0,0,0,114,175,0,0,0,114,117,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,8,0,0,0,218,23,95,118,
 | 
					    0,0,114,7,0,0,0,114,8,0,0,0,218,23,95,118,
 | 
				
			||||||
    97,108,105,100,97,116,101,95,116,105,109,101,115,116,97,109,
 | 
					    97,108,105,100,97,116,101,95,116,105,109,101,115,116,97,109,
 | 
				
			||||||
    112,95,112,121,99,103,2,0,0,115,20,0,0,0,24,19,
 | 
					    112,95,112,121,99,104,2,0,0,115,20,0,0,0,24,19,
 | 
				
			||||||
    10,1,12,1,16,1,8,1,22,1,2,255,22,2,8,254,
 | 
					    10,1,12,1,16,1,8,1,22,1,2,255,22,2,8,254,
 | 
				
			||||||
    255,128,114,180,0,0,0,99,4,0,0,0,0,0,0,0,
 | 
					    255,128,114,180,0,0,0,99,4,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0,
 | 
					    0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -885,7 +885,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,218,11,115,111,117,114,99,101,95,104,97,115,104,114,
 | 
					    0,0,218,11,115,111,117,114,99,101,95,104,97,115,104,114,
 | 
				
			||||||
    141,0,0,0,114,175,0,0,0,114,7,0,0,0,114,7,
 | 
					    141,0,0,0,114,175,0,0,0,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,218,18,95,118,97,108,105,100,
 | 
					    0,0,0,114,8,0,0,0,218,18,95,118,97,108,105,100,
 | 
				
			||||||
    97,116,101,95,104,97,115,104,95,112,121,99,131,2,0,0,
 | 
					    97,116,101,95,104,97,115,104,95,112,121,99,132,2,0,0,
 | 
				
			||||||
    115,16,0,0,0,16,17,2,1,8,1,4,255,2,2,6,
 | 
					    115,16,0,0,0,16,17,2,1,8,1,4,255,2,2,6,
 | 
				
			||||||
    254,4,255,255,128,114,182,0,0,0,99,4,0,0,0,0,
 | 
					    254,4,255,255,128,114,182,0,0,0,99,4,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67,
 | 
					    0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67,
 | 
				
			||||||
| 
						 | 
					@ -909,7 +909,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    114,41,0,0,0,114,141,0,0,0,114,132,0,0,0,114,
 | 
					    114,41,0,0,0,114,141,0,0,0,114,132,0,0,0,114,
 | 
				
			||||||
    134,0,0,0,218,4,99,111,100,101,114,7,0,0,0,114,
 | 
					    134,0,0,0,218,4,99,111,100,101,114,7,0,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,8,0,0,0,218,17,95,99,111,109,112,
 | 
					    7,0,0,0,114,8,0,0,0,218,17,95,99,111,109,112,
 | 
				
			||||||
    105,108,101,95,98,121,116,101,99,111,100,101,155,2,0,0,
 | 
					    105,108,101,95,98,121,116,101,99,111,100,101,156,2,0,0,
 | 
				
			||||||
    115,20,0,0,0,10,2,10,1,12,1,8,1,12,1,4,
 | 
					    115,20,0,0,0,10,2,10,1,12,1,8,1,12,1,4,
 | 
				
			||||||
    1,10,2,4,1,6,255,255,128,114,189,0,0,0,99,3,
 | 
					    1,10,2,4,1,6,255,255,128,114,189,0,0,0,99,3,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,
 | 
				
			||||||
| 
						 | 
					@ -928,7 +928,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    114,179,0,0,0,114,41,0,0,0,114,7,0,0,0,114,
 | 
					    114,179,0,0,0,114,41,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,8,0,0,0,218,22,95,99,111,100,101,
 | 
					    7,0,0,0,114,8,0,0,0,218,22,95,99,111,100,101,
 | 
				
			||||||
    95,116,111,95,116,105,109,101,115,116,97,109,112,95,112,121,
 | 
					    95,116,111,95,116,105,109,101,115,116,97,109,112,95,112,121,
 | 
				
			||||||
    99,168,2,0,0,115,14,0,0,0,8,2,14,1,14,1,
 | 
					    99,169,2,0,0,115,14,0,0,0,8,2,14,1,14,1,
 | 
				
			||||||
    14,1,16,1,4,1,255,128,114,194,0,0,0,84,99,3,
 | 
					    14,1,16,1,4,1,255,128,114,194,0,0,0,84,99,3,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,
 | 
				
			||||||
    0,0,0,67,0,0,0,115,80,0,0,0,116,0,116,1,
 | 
					    0,0,0,67,0,0,0,115,80,0,0,0,116,0,116,1,
 | 
				
			||||||
| 
						 | 
					@ -946,7 +946,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,90,7,99,104,101,99,107,101,100,114,41,0,0,0,
 | 
					    0,0,90,7,99,104,101,99,107,101,100,114,41,0,0,0,
 | 
				
			||||||
    114,16,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
 | 
					    114,16,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    8,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104,
 | 
					    8,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104,
 | 
				
			||||||
    97,115,104,95,112,121,99,178,2,0,0,115,16,0,0,0,
 | 
					    97,115,104,95,112,121,99,179,2,0,0,115,16,0,0,0,
 | 
				
			||||||
    8,2,12,1,14,1,16,1,10,1,16,1,4,1,255,128,
 | 
					    8,2,12,1,14,1,16,1,10,1,16,1,4,1,255,128,
 | 
				
			||||||
    114,195,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
 | 
					    114,195,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,5,0,0,0,6,0,0,0,67,0,0,0,115,62,
 | 
					    0,0,5,0,0,0,6,0,0,0,67,0,0,0,115,62,
 | 
				
			||||||
| 
						 | 
					@ -974,7 +974,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    105,110,103,90,15,110,101,119,108,105,110,101,95,100,101,99,
 | 
					    105,110,103,90,15,110,101,119,108,105,110,101,95,100,101,99,
 | 
				
			||||||
    111,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
					    111,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,114,
 | 
					    0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,114,
 | 
				
			||||||
    99,101,189,2,0,0,115,12,0,0,0,8,5,12,1,10,
 | 
					    99,101,190,2,0,0,115,12,0,0,0,8,5,12,1,10,
 | 
				
			||||||
    1,12,1,20,1,255,128,114,200,0,0,0,169,2,114,164,
 | 
					    1,12,1,20,1,255,128,114,200,0,0,0,169,2,114,164,
 | 
				
			||||||
    0,0,0,218,26,115,117,98,109,111,100,117,108,101,95,115,
 | 
					    0,0,0,218,26,115,117,98,109,111,100,117,108,101,95,115,
 | 
				
			||||||
    101,97,114,99,104,95,108,111,99,97,116,105,111,110,115,99,
 | 
					    101,97,114,99,104,95,108,111,99,97,116,105,111,110,115,99,
 | 
				
			||||||
| 
						 | 
					@ -1039,7 +1039,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,90,7,100,105,114,110,97,109,101,114,7,0,0,
 | 
					    0,0,0,90,7,100,105,114,110,97,109,101,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,8,0,0,0,218,23,115,112,101,
 | 
					    0,114,7,0,0,0,114,8,0,0,0,218,23,115,112,101,
 | 
				
			||||||
    99,95,102,114,111,109,95,102,105,108,101,95,108,111,99,97,
 | 
					    99,95,102,114,111,109,95,102,105,108,101,95,108,111,99,97,
 | 
				
			||||||
    116,105,111,110,206,2,0,0,115,86,0,0,0,8,12,4,
 | 
					    116,105,111,110,207,2,0,0,115,86,0,0,0,8,12,4,
 | 
				
			||||||
    4,10,1,2,2,14,1,12,1,4,1,2,251,10,7,8,
 | 
					    4,10,1,2,2,14,1,12,1,4,1,2,251,10,7,8,
 | 
				
			||||||
    1,2,1,18,1,12,1,2,1,16,8,6,1,8,3,14,
 | 
					    1,2,1,18,1,12,1,2,1,16,8,6,1,8,3,14,
 | 
				
			||||||
    1,14,1,10,1,6,1,4,1,2,253,4,5,8,3,10,
 | 
					    1,14,1,10,1,6,1,4,1,2,253,4,5,8,3,10,
 | 
				
			||||||
| 
						 | 
					@ -1078,7 +1078,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    18,72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,
 | 
					    18,72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,
 | 
				
			||||||
    73,78,69,114,19,0,0,0,114,7,0,0,0,114,7,0,
 | 
					    73,78,69,114,19,0,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,218,14,95,111,112,101,110,95,114,
 | 
					    0,0,114,8,0,0,0,218,14,95,111,112,101,110,95,114,
 | 
				
			||||||
    101,103,105,115,116,114,121,35,3,0,0,115,12,0,0,0,
 | 
					    101,103,105,115,116,114,121,36,3,0,0,115,12,0,0,0,
 | 
				
			||||||
    2,2,16,1,12,1,18,1,2,255,255,128,122,36,87,105,
 | 
					    2,2,16,1,12,1,18,1,2,255,255,128,122,36,87,105,
 | 
				
			||||||
    110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,
 | 
					    110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,
 | 
				
			||||||
    100,101,114,46,95,111,112,101,110,95,114,101,103,105,115,116,
 | 
					    100,101,114,46,95,111,112,101,110,95,114,101,103,105,115,116,
 | 
				
			||||||
| 
						 | 
					@ -1105,7 +1105,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    115,116,114,121,95,107,101,121,114,20,0,0,0,90,4,104,
 | 
					    115,116,114,121,95,107,101,121,114,20,0,0,0,90,4,104,
 | 
				
			||||||
    107,101,121,218,8,102,105,108,101,112,97,116,104,114,7,0,
 | 
					    107,101,121,218,8,102,105,108,101,112,97,116,104,114,7,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,8,0,0,0,218,16,95,115,
 | 
					    0,0,114,7,0,0,0,114,8,0,0,0,218,16,95,115,
 | 
				
			||||||
    101,97,114,99,104,95,114,101,103,105,115,116,114,121,42,3,
 | 
					    101,97,114,99,104,95,114,101,103,105,115,116,114,121,43,3,
 | 
				
			||||||
    0,0,115,30,0,0,0,6,2,8,1,6,2,6,1,16,
 | 
					    0,0,115,30,0,0,0,6,2,8,1,6,2,6,1,16,
 | 
				
			||||||
    1,6,255,2,2,12,1,26,1,18,128,4,3,12,254,6,
 | 
					    1,6,255,2,2,12,1,26,1,18,128,4,3,12,254,6,
 | 
				
			||||||
    1,2,255,255,128,122,38,87,105,110,100,111,119,115,82,101,
 | 
					    1,2,255,255,128,122,38,87,105,110,100,111,119,115,82,101,
 | 
				
			||||||
| 
						 | 
					@ -1128,7 +1128,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    65,0,0,0,218,6,116,97,114,103,101,116,114,222,0,0,
 | 
					    65,0,0,0,218,6,116,97,114,103,101,116,114,222,0,0,
 | 
				
			||||||
    0,114,164,0,0,0,114,212,0,0,0,114,210,0,0,0,
 | 
					    0,114,164,0,0,0,114,212,0,0,0,114,210,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,
 | 
				
			||||||
    9,102,105,110,100,95,115,112,101,99,57,3,0,0,115,36,
 | 
					    9,102,105,110,100,95,115,112,101,99,58,3,0,0,115,36,
 | 
				
			||||||
    0,0,0,10,2,8,1,4,1,2,1,12,1,12,1,6,
 | 
					    0,0,0,10,2,8,1,4,1,2,1,12,1,12,1,6,
 | 
				
			||||||
    1,14,1,14,1,6,1,8,1,2,1,6,254,8,3,2,
 | 
					    1,14,1,14,1,6,1,8,1,2,1,6,254,8,3,2,
 | 
				
			||||||
    252,4,255,2,254,255,128,122,31,87,105,110,100,111,119,115,
 | 
					    252,4,255,2,254,255,128,122,31,87,105,110,100,111,119,115,
 | 
				
			||||||
| 
						 | 
					@ -1156,7 +1156,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,114,226,0,0,0,114,164,0,0,0,169,4,114,221,
 | 
					    0,0,114,226,0,0,0,114,164,0,0,0,169,4,114,221,
 | 
				
			||||||
    0,0,0,114,163,0,0,0,114,65,0,0,0,114,210,0,
 | 
					    0,0,0,114,163,0,0,0,114,65,0,0,0,114,210,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
					    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,218,11,102,105,110,100,95,109,111,100,117,108,101,73,3,
 | 
					    0,218,11,102,105,110,100,95,109,111,100,117,108,101,74,3,
 | 
				
			||||||
    0,0,115,16,0,0,0,6,7,2,2,4,254,12,3,8,
 | 
					    0,0,115,16,0,0,0,6,7,2,2,4,254,12,3,8,
 | 
				
			||||||
    1,6,1,4,2,255,128,122,33,87,105,110,100,111,119,115,
 | 
					    1,6,1,4,2,255,128,122,33,87,105,110,100,111,119,115,
 | 
				
			||||||
    82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,102,
 | 
					    82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,102,
 | 
				
			||||||
| 
						 | 
					@ -1170,7 +1170,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    97,115,115,109,101,116,104,111,100,114,223,0,0,0,114,226,
 | 
					    97,115,115,109,101,116,104,111,100,114,223,0,0,0,114,226,
 | 
				
			||||||
    0,0,0,114,229,0,0,0,114,7,0,0,0,114,7,0,
 | 
					    0,0,0,114,229,0,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,8,0,0,0,114,214,0,0,
 | 
					    0,0,114,7,0,0,0,114,8,0,0,0,114,214,0,0,
 | 
				
			||||||
    0,23,3,0,0,115,32,0,0,0,8,0,4,2,2,3,
 | 
					    0,24,3,0,0,115,32,0,0,0,8,0,4,2,2,3,
 | 
				
			||||||
    2,255,2,4,2,255,12,3,2,2,10,1,2,6,10,1,
 | 
					    2,255,2,4,2,255,12,3,2,2,10,1,2,6,10,1,
 | 
				
			||||||
    2,14,12,1,2,15,16,1,255,128,114,214,0,0,0,99,
 | 
					    2,14,12,1,2,15,16,1,255,128,114,214,0,0,0,99,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1206,7 +1206,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,114,120,0,0,0,90,13,102,105,108,101,110,97,
 | 
					    0,0,0,114,120,0,0,0,90,13,102,105,108,101,110,97,
 | 
				
			||||||
    109,101,95,98,97,115,101,90,9,116,97,105,108,95,110,97,
 | 
					    109,101,95,98,97,115,101,90,9,116,97,105,108,95,110,97,
 | 
				
			||||||
    109,101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
					    109,101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,114,206,0,0,0,95,3,0,0,115,10,0,0,0,18,
 | 
					    0,114,206,0,0,0,96,3,0,0,115,10,0,0,0,18,
 | 
				
			||||||
    3,16,1,14,1,16,1,255,128,122,24,95,76,111,97,100,
 | 
					    3,16,1,14,1,16,1,255,128,122,24,95,76,111,97,100,
 | 
				
			||||||
    101,114,66,97,115,105,99,115,46,105,115,95,112,97,99,107,
 | 
					    101,114,66,97,115,105,99,115,46,105,115,95,112,97,99,107,
 | 
				
			||||||
    97,103,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
 | 
					    97,103,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1216,7 +1216,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    111,100,117,108,101,32,99,114,101,97,116,105,111,110,46,78,
 | 
					    111,100,117,108,101,32,99,114,101,97,116,105,111,110,46,78,
 | 
				
			||||||
    114,7,0,0,0,169,2,114,143,0,0,0,114,210,0,0,
 | 
					    114,7,0,0,0,169,2,114,143,0,0,0,114,210,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
					    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
				
			||||||
    218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,103,
 | 
					    218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,104,
 | 
				
			||||||
    3,0,0,243,4,0,0,0,4,0,255,128,122,27,95,76,
 | 
					    3,0,0,243,4,0,0,0,4,0,255,128,122,27,95,76,
 | 
				
			||||||
    111,97,100,101,114,66,97,115,105,99,115,46,99,114,101,97,
 | 
					    111,97,100,101,114,66,97,115,105,99,115,46,99,114,101,97,
 | 
				
			||||||
    116,101,95,109,111,100,117,108,101,99,2,0,0,0,0,0,
 | 
					    116,101,95,109,111,100,117,108,101,99,2,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1237,7 +1237,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,41,3,114,143,0,0,0,218,6,109,111,100,117,
 | 
					    0,0,0,41,3,114,143,0,0,0,218,6,109,111,100,117,
 | 
				
			||||||
    108,101,114,188,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
					    108,101,114,188,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,8,0,0,0,218,11,101,120,101,99,95,109,111,100,
 | 
					    0,114,8,0,0,0,218,11,101,120,101,99,95,109,111,100,
 | 
				
			||||||
    117,108,101,106,3,0,0,115,14,0,0,0,12,2,8,1,
 | 
					    117,108,101,107,3,0,0,115,14,0,0,0,12,2,8,1,
 | 
				
			||||||
    4,1,8,1,4,255,20,2,255,128,122,25,95,76,111,97,
 | 
					    4,1,8,1,4,255,20,2,255,128,122,25,95,76,111,97,
 | 
				
			||||||
    100,101,114,66,97,115,105,99,115,46,101,120,101,99,95,109,
 | 
					    100,101,114,66,97,115,105,99,115,46,101,120,101,99,95,109,
 | 
				
			||||||
    111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,
 | 
					    111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1249,13 +1249,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    117,108,101,95,115,104,105,109,169,2,114,143,0,0,0,114,
 | 
					    117,108,101,95,115,104,105,109,169,2,114,143,0,0,0,114,
 | 
				
			||||||
    163,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
					    163,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,
 | 
					    0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,
 | 
				
			||||||
    114,3,0,0,115,4,0,0,0,12,3,255,128,122,25,95,
 | 
					    115,3,0,0,115,4,0,0,0,12,3,255,128,122,25,95,
 | 
				
			||||||
    76,111,97,100,101,114,66,97,115,105,99,115,46,108,111,97,
 | 
					    76,111,97,100,101,114,66,97,115,105,99,115,46,108,111,97,
 | 
				
			||||||
    100,95,109,111,100,117,108,101,78,41,8,114,150,0,0,0,
 | 
					    100,95,109,111,100,117,108,101,78,41,8,114,150,0,0,0,
 | 
				
			||||||
    114,149,0,0,0,114,151,0,0,0,114,152,0,0,0,114,
 | 
					    114,149,0,0,0,114,151,0,0,0,114,152,0,0,0,114,
 | 
				
			||||||
    206,0,0,0,114,239,0,0,0,114,245,0,0,0,114,248,
 | 
					    206,0,0,0,114,239,0,0,0,114,245,0,0,0,114,248,
 | 
				
			||||||
    0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,
 | 
					    0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,114,235,0,0,0,90,3,0,0,
 | 
					    0,0,114,8,0,0,0,114,235,0,0,0,91,3,0,0,
 | 
				
			||||||
    115,14,0,0,0,8,0,4,2,8,3,8,8,8,3,12,
 | 
					    115,14,0,0,0,8,0,4,2,8,3,8,8,8,3,12,
 | 
				
			||||||
    8,255,128,114,235,0,0,0,99,0,0,0,0,0,0,0,
 | 
					    8,255,128,114,235,0,0,0,99,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,
 | 
					    0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1280,7 +1280,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    100,46,10,32,32,32,32,32,32,32,32,78,41,1,114,76,
 | 
					    100,46,10,32,32,32,32,32,32,32,32,78,41,1,114,76,
 | 
				
			||||||
    0,0,0,169,2,114,143,0,0,0,114,65,0,0,0,114,
 | 
					    0,0,0,169,2,114,143,0,0,0,114,65,0,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10,
 | 
					    7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10,
 | 
				
			||||||
    112,97,116,104,95,109,116,105,109,101,122,3,0,0,115,4,
 | 
					    112,97,116,104,95,109,116,105,109,101,123,3,0,0,115,4,
 | 
				
			||||||
    0,0,0,4,6,255,128,122,23,83,111,117,114,99,101,76,
 | 
					    0,0,0,4,6,255,128,122,23,83,111,117,114,99,101,76,
 | 
				
			||||||
    111,97,100,101,114,46,112,97,116,104,95,109,116,105,109,101,
 | 
					    111,97,100,101,114,46,112,97,116,104,95,109,116,105,109,101,
 | 
				
			||||||
    99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
 | 
					    99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1314,7 +1314,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    104,97,110,100,108,101,100,46,10,32,32,32,32,32,32,32,
 | 
					    104,97,110,100,108,101,100,46,10,32,32,32,32,32,32,32,
 | 
				
			||||||
    32,114,193,0,0,0,78,41,1,114,251,0,0,0,114,250,
 | 
					    32,114,193,0,0,0,78,41,1,114,251,0,0,0,114,250,
 | 
				
			||||||
    0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
 | 
					    0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
 | 
				
			||||||
    0,0,218,10,112,97,116,104,95,115,116,97,116,115,130,3,
 | 
					    0,0,218,10,112,97,116,104,95,115,116,97,116,115,131,3,
 | 
				
			||||||
    0,0,115,4,0,0,0,14,12,255,128,122,23,83,111,117,
 | 
					    0,0,115,4,0,0,0,14,12,255,128,122,23,83,111,117,
 | 
				
			||||||
    114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,115,
 | 
					    114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,115,
 | 
				
			||||||
    116,97,116,115,99,4,0,0,0,0,0,0,0,0,0,0,
 | 
					    116,97,116,115,99,4,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1339,7 +1339,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    10,99,97,99,104,101,95,112,97,116,104,114,41,0,0,0,
 | 
					    10,99,97,99,104,101,95,112,97,116,104,114,41,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,
 | 
				
			||||||
    15,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101,
 | 
					    15,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101,
 | 
				
			||||||
    144,3,0,0,115,4,0,0,0,12,8,255,128,122,28,83,
 | 
					    145,3,0,0,115,4,0,0,0,12,8,255,128,122,28,83,
 | 
				
			||||||
    111,117,114,99,101,76,111,97,100,101,114,46,95,99,97,99,
 | 
					    111,117,114,99,101,76,111,97,100,101,114,46,95,99,97,99,
 | 
				
			||||||
    104,101,95,98,121,116,101,99,111,100,101,99,3,0,0,0,
 | 
					    104,101,95,98,121,116,101,99,111,100,101,99,3,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,
 | 
					    0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1355,7 +1355,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    111,100,101,32,102,105,108,101,115,46,10,32,32,32,32,32,
 | 
					    111,100,101,32,102,105,108,101,115,46,10,32,32,32,32,32,
 | 
				
			||||||
    32,32,32,78,114,7,0,0,0,41,3,114,143,0,0,0,
 | 
					    32,32,32,78,114,7,0,0,0,41,3,114,143,0,0,0,
 | 
				
			||||||
    114,65,0,0,0,114,41,0,0,0,114,7,0,0,0,114,
 | 
					    114,65,0,0,0,114,41,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,8,0,0,0,114,253,0,0,0,154,3,
 | 
					    7,0,0,0,114,8,0,0,0,114,253,0,0,0,155,3,
 | 
				
			||||||
    0,0,114,240,0,0,0,122,21,83,111,117,114,99,101,76,
 | 
					    0,0,114,240,0,0,0,122,21,83,111,117,114,99,101,76,
 | 
				
			||||||
    111,97,100,101,114,46,115,101,116,95,100,97,116,97,99,2,
 | 
					    111,97,100,101,114,46,115,101,116,95,100,97,116,97,99,2,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,10,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,10,
 | 
				
			||||||
| 
						 | 
					@ -1375,7 +1375,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    142,0,0,0,114,200,0,0,0,41,5,114,143,0,0,0,
 | 
					    142,0,0,0,114,200,0,0,0,41,5,114,143,0,0,0,
 | 
				
			||||||
    114,163,0,0,0,114,65,0,0,0,114,198,0,0,0,218,
 | 
					    114,163,0,0,0,114,65,0,0,0,114,198,0,0,0,218,
 | 
				
			||||||
    3,101,120,99,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
					    3,101,120,99,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,161,
 | 
					    0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,162,
 | 
				
			||||||
    3,0,0,115,26,0,0,0,10,2,2,1,12,1,8,4,
 | 
					    3,0,0,115,26,0,0,0,10,2,2,1,12,1,8,4,
 | 
				
			||||||
    14,253,4,1,2,1,4,255,2,1,2,255,8,128,2,255,
 | 
					    14,253,4,1,2,1,4,255,2,1,2,255,8,128,2,255,
 | 
				
			||||||
    255,128,122,23,83,111,117,114,99,101,76,111,97,100,101,114,
 | 
					    255,128,122,23,83,111,117,114,99,101,76,111,97,100,101,114,
 | 
				
			||||||
| 
						 | 
					@ -1398,7 +1398,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    7,99,111,109,112,105,108,101,41,4,114,143,0,0,0,114,
 | 
					    7,99,111,109,112,105,108,101,41,4,114,143,0,0,0,114,
 | 
				
			||||||
    41,0,0,0,114,65,0,0,0,114,2,1,0,0,114,7,
 | 
					    41,0,0,0,114,65,0,0,0,114,2,1,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,115,
 | 
					    0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,115,
 | 
				
			||||||
    111,117,114,99,101,95,116,111,95,99,111,100,101,171,3,0,
 | 
					    111,117,114,99,101,95,116,111,95,99,111,100,101,172,3,0,
 | 
				
			||||||
    0,115,8,0,0,0,12,5,4,1,6,255,255,128,122,27,
 | 
					    0,115,8,0,0,0,12,5,4,1,6,255,255,128,122,27,
 | 
				
			||||||
    83,111,117,114,99,101,76,111,97,100,101,114,46,115,111,117,
 | 
					    83,111,117,114,99,101,76,111,97,100,101,114,46,115,111,117,
 | 
				
			||||||
    114,99,101,95,116,111,95,99,111,100,101,99,2,0,0,0,
 | 
					    114,99,101,95,116,111,95,99,111,100,101,99,2,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1475,7 +1475,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    16,0,0,0,90,10,98,121,116,101,115,95,100,97,116,97,
 | 
					    16,0,0,0,90,10,98,121,116,101,115,95,100,97,116,97,
 | 
				
			||||||
    90,11,99,111,100,101,95,111,98,106,101,99,116,114,7,0,
 | 
					    90,11,99,111,100,101,95,111,98,106,101,99,116,114,7,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,8,0,0,0,114,241,0,0,
 | 
					    0,0,114,7,0,0,0,114,8,0,0,0,114,241,0,0,
 | 
				
			||||||
    0,179,3,0,0,115,170,0,0,0,10,7,4,1,4,1,
 | 
					    0,180,3,0,0,115,170,0,0,0,10,7,4,1,4,1,
 | 
				
			||||||
    4,1,4,1,4,1,2,1,12,1,14,1,8,1,2,2,
 | 
					    4,1,4,1,4,1,2,1,12,1,14,1,8,1,2,2,
 | 
				
			||||||
    14,1,14,1,4,1,12,2,2,1,14,1,14,1,4,1,
 | 
					    14,1,14,1,4,1,12,2,2,1,14,1,14,1,4,1,
 | 
				
			||||||
    2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1,
 | 
					    2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1,
 | 
				
			||||||
| 
						 | 
					@ -1492,7 +1492,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,114,252,0,0,0,114,254,0,0,0,114,253,0,0,
 | 
					    0,0,114,252,0,0,0,114,254,0,0,0,114,253,0,0,
 | 
				
			||||||
    0,114,1,1,0,0,114,5,1,0,0,114,241,0,0,0,
 | 
					    0,114,1,1,0,0,114,5,1,0,0,114,241,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    8,0,0,0,114,249,0,0,0,120,3,0,0,115,18,0,
 | 
					    8,0,0,0,114,249,0,0,0,121,3,0,0,115,18,0,
 | 
				
			||||||
    0,0,8,0,8,2,8,8,8,14,8,10,8,7,14,10,
 | 
					    0,0,8,0,8,2,8,8,8,14,8,10,8,7,14,10,
 | 
				
			||||||
    12,8,255,128,114,249,0,0,0,99,0,0,0,0,0,0,
 | 
					    12,8,255,128,114,249,0,0,0,99,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,
 | 
					    0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1520,7 +1520,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    102,105,110,100,101,114,46,78,114,183,0,0,0,41,3,114,
 | 
					    102,105,110,100,101,114,46,78,114,183,0,0,0,41,3,114,
 | 
				
			||||||
    143,0,0,0,114,163,0,0,0,114,65,0,0,0,114,7,
 | 
					    143,0,0,0,114,163,0,0,0,114,65,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,
 | 
					    0,0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,
 | 
				
			||||||
    0,0,13,4,0,0,115,6,0,0,0,6,3,10,1,255,
 | 
					    0,0,14,4,0,0,115,6,0,0,0,6,3,10,1,255,
 | 
				
			||||||
    128,122,19,70,105,108,101,76,111,97,100,101,114,46,95,95,
 | 
					    128,122,19,70,105,108,101,76,111,97,100,101,114,46,95,95,
 | 
				
			||||||
    105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,0,
 | 
					    105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,243,
 | 
					    0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,243,
 | 
				
			||||||
| 
						 | 
					@ -1529,7 +1529,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,169,2,218,9,95,95,99,108,97,115,115,95,95,114,156,
 | 
					    0,169,2,218,9,95,95,99,108,97,115,115,95,95,114,156,
 | 
				
			||||||
    0,0,0,169,2,114,143,0,0,0,90,5,111,116,104,101,
 | 
					    0,0,0,169,2,114,143,0,0,0,90,5,111,116,104,101,
 | 
				
			||||||
    114,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
					    114,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
				
			||||||
    218,6,95,95,101,113,95,95,19,4,0,0,243,8,0,0,
 | 
					    218,6,95,95,101,113,95,95,20,4,0,0,243,8,0,0,
 | 
				
			||||||
    0,12,1,10,1,2,255,255,128,122,17,70,105,108,101,76,
 | 
					    0,12,1,10,1,2,255,255,128,122,17,70,105,108,101,76,
 | 
				
			||||||
    111,97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,
 | 
					    111,97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,
 | 
					    0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1538,7 +1538,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,169,3,218,4,104,97,115,104,114,141,0,0,0,
 | 
					    0,0,0,169,3,218,4,104,97,115,104,114,141,0,0,0,
 | 
				
			||||||
    114,65,0,0,0,169,1,114,143,0,0,0,114,7,0,0,
 | 
					    114,65,0,0,0,169,1,114,143,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,8,0,0,0,218,8,95,95,104,
 | 
					    0,114,7,0,0,0,114,8,0,0,0,218,8,95,95,104,
 | 
				
			||||||
    97,115,104,95,95,23,4,0,0,243,4,0,0,0,20,1,
 | 
					    97,115,104,95,95,24,4,0,0,243,4,0,0,0,20,1,
 | 
				
			||||||
    255,128,122,19,70,105,108,101,76,111,97,100,101,114,46,95,
 | 
					    255,128,122,19,70,105,108,101,76,111,97,100,101,114,46,95,
 | 
				
			||||||
    95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0,
 | 
					    95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,
 | 
					    0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1552,7 +1552,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,3,
 | 
					    97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,3,
 | 
				
			||||||
    218,5,115,117,112,101,114,114,11,1,0,0,114,248,0,0,
 | 
					    218,5,115,117,112,101,114,114,11,1,0,0,114,248,0,0,
 | 
				
			||||||
    0,114,247,0,0,0,169,1,114,14,1,0,0,114,7,0,
 | 
					    0,114,247,0,0,0,169,1,114,14,1,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,114,248,0,0,0,26,4,0,0,
 | 
					    0,0,114,8,0,0,0,114,248,0,0,0,27,4,0,0,
 | 
				
			||||||
    115,4,0,0,0,16,10,255,128,122,22,70,105,108,101,76,
 | 
					    115,4,0,0,0,16,10,255,128,122,22,70,105,108,101,76,
 | 
				
			||||||
    111,97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,
 | 
					    111,97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,
 | 
				
			||||||
    101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,
 | 
					    101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,
 | 
				
			||||||
| 
						 | 
					@ -1563,7 +1563,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    111,117,110,100,32,98,121,32,116,104,101,32,102,105,110,100,
 | 
					    111,117,110,100,32,98,121,32,116,104,101,32,102,105,110,100,
 | 
				
			||||||
    101,114,46,78,114,71,0,0,0,114,247,0,0,0,114,7,
 | 
					    101,114,46,78,114,71,0,0,0,114,247,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,7,0,0,0,114,8,0,0,0,114,203,0,
 | 
					    0,0,0,114,7,0,0,0,114,8,0,0,0,114,203,0,
 | 
				
			||||||
    0,0,38,4,0,0,243,4,0,0,0,6,3,255,128,122,
 | 
					    0,0,39,4,0,0,243,4,0,0,0,6,3,255,128,122,
 | 
				
			||||||
    23,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
 | 
					    23,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
 | 
				
			||||||
    102,105,108,101,110,97,109,101,99,2,0,0,0,0,0,0,
 | 
					    102,105,108,101,110,97,109,101,99,2,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0,
 | 
					    0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1584,7 +1584,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    110,95,99,111,100,101,114,109,0,0,0,90,4,114,101,97,
 | 
					    110,95,99,111,100,101,114,109,0,0,0,90,4,114,101,97,
 | 
				
			||||||
    100,114,92,0,0,0,41,3,114,143,0,0,0,114,65,0,
 | 
					    100,114,92,0,0,0,41,3,114,143,0,0,0,114,65,0,
 | 
				
			||||||
    0,0,114,94,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
					    0,0,114,94,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,8,0,0,0,114,255,0,0,0,43,4,0,0,115,
 | 
					    0,114,8,0,0,0,114,255,0,0,0,44,4,0,0,115,
 | 
				
			||||||
    16,0,0,0,14,2,16,1,22,1,20,128,14,2,22,1,
 | 
					    16,0,0,0,14,2,16,1,22,1,20,128,14,2,22,1,
 | 
				
			||||||
    20,128,255,128,122,19,70,105,108,101,76,111,97,100,101,114,
 | 
					    20,128,255,128,122,19,70,105,108,101,76,111,97,100,101,114,
 | 
				
			||||||
    46,103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,
 | 
					    46,103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1597,7 +1597,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,114,244,0,0,0,114,31,1,0,0,114,7,0,0,
 | 
					    0,0,114,244,0,0,0,114,31,1,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,8,0,0,0,218,19,103,101,116,
 | 
					    0,114,7,0,0,0,114,8,0,0,0,218,19,103,101,116,
 | 
				
			||||||
    95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,
 | 
					    95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,
 | 
				
			||||||
    52,4,0,0,115,6,0,0,0,12,2,8,1,255,128,122,
 | 
					    53,4,0,0,115,6,0,0,0,12,2,8,1,255,128,122,
 | 
				
			||||||
    30,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
 | 
					    30,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
 | 
				
			||||||
    114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,41,
 | 
					    114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,41,
 | 
				
			||||||
    13,114,150,0,0,0,114,149,0,0,0,114,151,0,0,0,
 | 
					    13,114,150,0,0,0,114,149,0,0,0,114,151,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1606,7 +1606,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,114,255,0,0,0,114,33,1,0,0,90,13,95,
 | 
					    0,0,0,114,255,0,0,0,114,33,1,0,0,90,13,95,
 | 
				
			||||||
    95,99,108,97,115,115,99,101,108,108,95,95,114,7,0,0,
 | 
					    95,99,108,97,115,115,99,101,108,108,95,95,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,25,1,0,0,114,8,0,0,0,
 | 
					    0,114,7,0,0,0,114,25,1,0,0,114,8,0,0,0,
 | 
				
			||||||
    114,11,1,0,0,8,4,0,0,115,26,0,0,0,8,0,
 | 
					    114,11,1,0,0,9,4,0,0,115,26,0,0,0,8,0,
 | 
				
			||||||
    4,2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,
 | 
					    4,2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,
 | 
				
			||||||
    8,4,2,9,18,1,255,128,114,11,1,0,0,99,0,0,
 | 
					    8,4,2,9,18,1,255,128,114,11,1,0,0,99,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
 | 
				
			||||||
| 
						 | 
					@ -1629,7 +1629,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    116,105,109,101,90,7,115,116,95,115,105,122,101,41,3,114,
 | 
					    116,105,109,101,90,7,115,116,95,115,105,122,101,41,3,114,
 | 
				
			||||||
    143,0,0,0,114,65,0,0,0,114,10,1,0,0,114,7,
 | 
					    143,0,0,0,114,65,0,0,0,114,10,1,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,7,0,0,0,114,8,0,0,0,114,252,0,
 | 
					    0,0,0,114,7,0,0,0,114,8,0,0,0,114,252,0,
 | 
				
			||||||
    0,0,62,4,0,0,115,6,0,0,0,8,2,14,1,255,
 | 
					    0,0,63,4,0,0,115,6,0,0,0,8,2,14,1,255,
 | 
				
			||||||
    128,122,27,83,111,117,114,99,101,70,105,108,101,76,111,97,
 | 
					    128,122,27,83,111,117,114,99,101,70,105,108,101,76,111,97,
 | 
				
			||||||
    100,101,114,46,112,97,116,104,95,115,116,97,116,115,99,4,
 | 
					    100,101,114,46,112,97,116,104,95,115,116,97,116,115,99,4,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,
 | 
				
			||||||
| 
						 | 
					@ -1639,7 +1639,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    41,2,114,139,0,0,0,114,253,0,0,0,41,5,114,143,
 | 
					    41,2,114,139,0,0,0,114,253,0,0,0,41,5,114,143,
 | 
				
			||||||
    0,0,0,114,134,0,0,0,114,132,0,0,0,114,41,0,
 | 
					    0,0,0,114,134,0,0,0,114,132,0,0,0,114,41,0,
 | 
				
			||||||
    0,0,114,78,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
					    0,0,114,78,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,8,0,0,0,114,254,0,0,0,67,4,0,0,115,
 | 
					    0,114,8,0,0,0,114,254,0,0,0,68,4,0,0,115,
 | 
				
			||||||
    6,0,0,0,8,2,16,1,255,128,122,32,83,111,117,114,
 | 
					    6,0,0,0,8,2,16,1,255,128,122,32,83,111,117,114,
 | 
				
			||||||
    99,101,70,105,108,101,76,111,97,100,101,114,46,95,99,97,
 | 
					    99,101,70,105,108,101,76,111,97,100,101,114,46,95,99,97,
 | 
				
			||||||
    99,104,101,95,98,121,116,101,99,111,100,101,114,87,0,0,
 | 
					    99,104,101,95,98,121,116,101,99,111,100,101,114,87,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1675,7 +1675,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    37,1,0,0,218,6,112,97,114,101,110,116,114,120,0,0,
 | 
					    37,1,0,0,218,6,112,97,114,101,110,116,114,120,0,0,
 | 
				
			||||||
    0,114,63,0,0,0,114,68,0,0,0,114,0,1,0,0,
 | 
					    0,114,63,0,0,0,114,68,0,0,0,114,0,1,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
				
			||||||
    253,0,0,0,72,4,0,0,115,58,0,0,0,12,2,4,
 | 
					    253,0,0,0,73,4,0,0,115,58,0,0,0,12,2,4,
 | 
				
			||||||
    1,12,2,12,1,10,1,12,254,12,4,10,1,2,1,14,
 | 
					    1,12,2,12,1,10,1,12,254,12,4,10,1,2,1,14,
 | 
				
			||||||
    1,12,1,4,2,14,1,6,3,4,1,4,255,16,2,8,
 | 
					    1,12,1,4,2,14,1,6,3,4,1,4,255,16,2,8,
 | 
				
			||||||
    128,2,1,12,1,18,1,14,1,8,2,2,1,18,255,8,
 | 
					    128,2,1,12,1,18,1,14,1,8,2,2,1,18,255,8,
 | 
				
			||||||
| 
						 | 
					@ -1685,7 +1685,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    151,0,0,0,114,152,0,0,0,114,252,0,0,0,114,254,
 | 
					    151,0,0,0,114,152,0,0,0,114,252,0,0,0,114,254,
 | 
				
			||||||
    0,0,0,114,253,0,0,0,114,7,0,0,0,114,7,0,
 | 
					    0,0,0,114,253,0,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,8,0,0,0,114,34,1,0,
 | 
					    0,0,114,7,0,0,0,114,8,0,0,0,114,34,1,0,
 | 
				
			||||||
    0,58,4,0,0,115,12,0,0,0,8,0,4,2,8,2,
 | 
					    0,59,4,0,0,115,12,0,0,0,8,0,4,2,8,2,
 | 
				
			||||||
    8,5,18,5,255,128,114,34,1,0,0,99,0,0,0,0,
 | 
					    8,5,18,5,255,128,114,34,1,0,0,99,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
 | 
				
			||||||
    64,0,0,0,115,32,0,0,0,101,0,90,1,100,0,90,
 | 
					    64,0,0,0,115,32,0,0,0,101,0,90,1,100,0,90,
 | 
				
			||||||
| 
						 | 
					@ -1707,7 +1707,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,114,7,1,0,0,41,5,114,143,0,0,0,114,163,0,
 | 
					    0,114,7,1,0,0,41,5,114,143,0,0,0,114,163,0,
 | 
				
			||||||
    0,0,114,65,0,0,0,114,41,0,0,0,114,175,0,0,
 | 
					    0,0,114,65,0,0,0,114,41,0,0,0,114,175,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
					    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
				
			||||||
    114,241,0,0,0,107,4,0,0,115,24,0,0,0,10,1,
 | 
					    114,241,0,0,0,108,4,0,0,115,24,0,0,0,10,1,
 | 
				
			||||||
    10,1,2,4,2,1,6,254,12,4,2,1,14,1,2,1,
 | 
					    10,1,2,4,2,1,6,254,12,4,2,1,14,1,2,1,
 | 
				
			||||||
    2,1,6,253,255,128,122,29,83,111,117,114,99,101,108,101,
 | 
					    2,1,6,253,255,128,122,29,83,111,117,114,99,101,108,101,
 | 
				
			||||||
    115,115,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
 | 
					    115,115,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
 | 
				
			||||||
| 
						 | 
					@ -1717,14 +1717,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    110,101,32,97,115,32,116,104,101,114,101,32,105,115,32,110,
 | 
					    110,101,32,97,115,32,116,104,101,114,101,32,105,115,32,110,
 | 
				
			||||||
    111,32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,
 | 
					    111,32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,
 | 
				
			||||||
    7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7,
 | 
					    7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,114,1,1,0,0,123,4,0,
 | 
					    0,0,0,114,8,0,0,0,114,1,1,0,0,124,4,0,
 | 
				
			||||||
    0,114,24,0,0,0,122,31,83,111,117,114,99,101,108,101,
 | 
					    0,114,24,0,0,0,122,31,83,111,117,114,99,101,108,101,
 | 
				
			||||||
    115,115,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
 | 
					    115,115,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
 | 
				
			||||||
    95,115,111,117,114,99,101,78,41,6,114,150,0,0,0,114,
 | 
					    95,115,111,117,114,99,101,78,41,6,114,150,0,0,0,114,
 | 
				
			||||||
    149,0,0,0,114,151,0,0,0,114,152,0,0,0,114,241,
 | 
					    149,0,0,0,114,151,0,0,0,114,152,0,0,0,114,241,
 | 
				
			||||||
    0,0,0,114,1,1,0,0,114,7,0,0,0,114,7,0,
 | 
					    0,0,0,114,1,1,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,8,0,0,0,114,41,1,0,
 | 
					    0,0,114,7,0,0,0,114,8,0,0,0,114,41,1,0,
 | 
				
			||||||
    0,103,4,0,0,115,10,0,0,0,8,0,4,2,8,2,
 | 
					    0,104,4,0,0,115,10,0,0,0,8,0,4,2,8,2,
 | 
				
			||||||
    12,16,255,128,114,41,1,0,0,99,0,0,0,0,0,0,
 | 
					    12,16,255,128,114,41,1,0,0,99,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,
 | 
					    0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,
 | 
				
			||||||
    0,0,115,92,0,0,0,101,0,90,1,100,0,90,2,100,
 | 
					    0,0,115,92,0,0,0,101,0,90,1,100,0,90,2,100,
 | 
				
			||||||
| 
						 | 
					@ -1745,20 +1745,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,95,1,100,0,83,0,114,69,0,0,0,114,183,0,0,
 | 
					    0,95,1,100,0,83,0,114,69,0,0,0,114,183,0,0,
 | 
				
			||||||
    0,41,3,114,143,0,0,0,114,141,0,0,0,114,65,0,
 | 
					    0,41,3,114,143,0,0,0,114,141,0,0,0,114,65,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
					    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,114,236,0,0,0,136,4,0,0,115,6,0,0,0,6,
 | 
					    0,114,236,0,0,0,137,4,0,0,115,6,0,0,0,6,
 | 
				
			||||||
    1,10,1,255,128,122,28,69,120,116,101,110,115,105,111,110,
 | 
					    1,10,1,255,128,122,28,69,120,116,101,110,115,105,111,110,
 | 
				
			||||||
    70,105,108,101,76,111,97,100,101,114,46,95,95,105,110,105,
 | 
					    70,105,108,101,76,111,97,100,101,114,46,95,95,105,110,105,
 | 
				
			||||||
    116,95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,
 | 
					    116,95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
    2,0,0,0,2,0,0,0,67,0,0,0,114,12,1,0,
 | 
					    2,0,0,0,2,0,0,0,67,0,0,0,114,12,1,0,
 | 
				
			||||||
    0,114,69,0,0,0,114,13,1,0,0,114,15,1,0,0,
 | 
					    0,114,69,0,0,0,114,13,1,0,0,114,15,1,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
				
			||||||
    16,1,0,0,140,4,0,0,114,17,1,0,0,122,26,69,
 | 
					    16,1,0,0,141,4,0,0,114,17,1,0,0,122,26,69,
 | 
				
			||||||
    120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
 | 
					    120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
 | 
				
			||||||
    101,114,46,95,95,101,113,95,95,99,1,0,0,0,0,0,
 | 
					    101,114,46,95,95,101,113,95,95,99,1,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,
 | 
					    0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,
 | 
				
			||||||
    0,0,114,18,1,0,0,114,69,0,0,0,114,19,1,0,
 | 
					    0,0,114,18,1,0,0,114,69,0,0,0,114,19,1,0,
 | 
				
			||||||
    0,114,21,1,0,0,114,7,0,0,0,114,7,0,0,0,
 | 
					    0,114,21,1,0,0,114,7,0,0,0,114,7,0,0,0,
 | 
				
			||||||
    114,8,0,0,0,114,22,1,0,0,144,4,0,0,114,23,
 | 
					    114,8,0,0,0,114,22,1,0,0,145,4,0,0,114,23,
 | 
				
			||||||
    1,0,0,122,28,69,120,116,101,110,115,105,111,110,70,105,
 | 
					    1,0,0,122,28,69,120,116,101,110,115,105,111,110,70,105,
 | 
				
			||||||
    108,101,76,111,97,100,101,114,46,95,95,104,97,115,104,95,
 | 
					    108,101,76,111,97,100,101,114,46,95,95,104,97,115,104,95,
 | 
				
			||||||
    95,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,
 | 
					    95,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,
 | 
				
			||||||
| 
						 | 
					@ -1775,7 +1775,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    100,121,110,97,109,105,99,114,173,0,0,0,114,141,0,0,
 | 
					    100,121,110,97,109,105,99,114,173,0,0,0,114,141,0,0,
 | 
				
			||||||
    0,114,65,0,0,0,41,3,114,143,0,0,0,114,210,0,
 | 
					    0,114,65,0,0,0,41,3,114,143,0,0,0,114,210,0,
 | 
				
			||||||
    0,0,114,244,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
					    0,0,114,244,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,8,0,0,0,114,239,0,0,0,147,4,0,0,115,
 | 
					    0,114,8,0,0,0,114,239,0,0,0,148,4,0,0,115,
 | 
				
			||||||
    16,0,0,0,4,2,6,1,4,255,6,2,8,1,4,255,
 | 
					    16,0,0,0,4,2,6,1,4,255,6,2,8,1,4,255,
 | 
				
			||||||
    4,2,255,128,122,33,69,120,116,101,110,115,105,111,110,70,
 | 
					    4,2,255,128,122,33,69,120,116,101,110,115,105,111,110,70,
 | 
				
			||||||
    105,108,101,76,111,97,100,101,114,46,99,114,101,97,116,101,
 | 
					    105,108,101,76,111,97,100,101,114,46,99,114,101,97,116,101,
 | 
				
			||||||
| 
						 | 
					@ -1793,7 +1793,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    110,97,109,105,99,114,173,0,0,0,114,141,0,0,0,114,
 | 
					    110,97,109,105,99,114,173,0,0,0,114,141,0,0,0,114,
 | 
				
			||||||
    65,0,0,0,169,2,114,143,0,0,0,114,244,0,0,0,
 | 
					    65,0,0,0,169,2,114,143,0,0,0,114,244,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
				
			||||||
    245,0,0,0,155,4,0,0,115,10,0,0,0,14,2,6,
 | 
					    245,0,0,0,156,4,0,0,115,10,0,0,0,14,2,6,
 | 
				
			||||||
    1,8,1,8,255,255,128,122,31,69,120,116,101,110,115,105,
 | 
					    1,8,1,8,255,255,128,122,31,69,120,116,101,110,115,105,
 | 
				
			||||||
    111,110,70,105,108,101,76,111,97,100,101,114,46,101,120,101,
 | 
					    111,110,70,105,108,101,76,111,97,100,101,114,46,101,120,101,
 | 
				
			||||||
    99,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,
 | 
					    99,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1811,14 +1811,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    114,236,0,0,0,78,114,7,0,0,0,169,2,114,5,0,
 | 
					    114,236,0,0,0,78,114,7,0,0,0,169,2,114,5,0,
 | 
				
			||||||
    0,0,218,6,115,117,102,102,105,120,169,1,90,9,102,105,
 | 
					    0,0,218,6,115,117,102,102,105,120,169,1,90,9,102,105,
 | 
				
			||||||
    108,101,95,110,97,109,101,114,7,0,0,0,114,8,0,0,
 | 
					    108,101,95,110,97,109,101,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,114,9,0,0,0,164,4,0,0,115,8,0,0,0,6,
 | 
					    0,114,9,0,0,0,165,4,0,0,115,8,0,0,0,6,
 | 
				
			||||||
    128,2,1,20,255,255,128,122,49,69,120,116,101,110,115,105,
 | 
					    128,2,1,20,255,255,128,122,49,69,120,116,101,110,115,105,
 | 
				
			||||||
    111,110,70,105,108,101,76,111,97,100,101,114,46,105,115,95,
 | 
					    111,110,70,105,108,101,76,111,97,100,101,114,46,105,115,95,
 | 
				
			||||||
    112,97,99,107,97,103,101,46,60,108,111,99,97,108,115,62,
 | 
					    112,97,99,107,97,103,101,46,60,108,111,99,97,108,115,62,
 | 
				
			||||||
    46,60,103,101,110,101,120,112,114,62,78,41,4,114,74,0,
 | 
					    46,60,103,101,110,101,120,112,114,62,78,41,4,114,74,0,
 | 
				
			||||||
    0,0,114,65,0,0,0,218,3,97,110,121,114,232,0,0,
 | 
					    0,0,114,65,0,0,0,218,3,97,110,121,114,232,0,0,
 | 
				
			||||||
    0,114,247,0,0,0,114,7,0,0,0,114,45,1,0,0,
 | 
					    0,114,247,0,0,0,114,7,0,0,0,114,45,1,0,0,
 | 
				
			||||||
    114,8,0,0,0,114,206,0,0,0,161,4,0,0,115,10,
 | 
					    114,8,0,0,0,114,206,0,0,0,162,4,0,0,115,10,
 | 
				
			||||||
    0,0,0,14,2,12,1,2,1,8,255,255,128,122,30,69,
 | 
					    0,0,0,14,2,12,1,2,1,8,255,255,128,122,30,69,
 | 
				
			||||||
    120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
 | 
					    120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
 | 
				
			||||||
    101,114,46,105,115,95,112,97,99,107,97,103,101,99,2,0,
 | 
					    101,114,46,105,115,95,112,97,99,107,97,103,101,99,2,0,
 | 
				
			||||||
| 
						 | 
					@ -1829,7 +1829,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    101,32,99,97,110,110,111,116,32,99,114,101,97,116,101,32,
 | 
					    101,32,99,97,110,110,111,116,32,99,114,101,97,116,101,32,
 | 
				
			||||||
    97,32,99,111,100,101,32,111,98,106,101,99,116,46,78,114,
 | 
					    97,32,99,111,100,101,32,111,98,106,101,99,116,46,78,114,
 | 
				
			||||||
    7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7,
 | 
					    7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,114,241,0,0,0,167,4,0,
 | 
					    0,0,0,114,8,0,0,0,114,241,0,0,0,168,4,0,
 | 
				
			||||||
    0,114,24,0,0,0,122,28,69,120,116,101,110,115,105,111,
 | 
					    0,114,24,0,0,0,122,28,69,120,116,101,110,115,105,111,
 | 
				
			||||||
    110,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
 | 
					    110,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
 | 
				
			||||||
    99,111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,
 | 
					    99,111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1839,14 +1839,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    111,100,117,108,101,115,32,104,97,118,101,32,110,111,32,115,
 | 
					    111,100,117,108,101,115,32,104,97,118,101,32,110,111,32,115,
 | 
				
			||||||
    111,117,114,99,101,32,99,111,100,101,46,78,114,7,0,0,
 | 
					    111,117,114,99,101,32,99,111,100,101,46,78,114,7,0,0,
 | 
				
			||||||
    0,114,247,0,0,0,114,7,0,0,0,114,7,0,0,0,
 | 
					    0,114,247,0,0,0,114,7,0,0,0,114,7,0,0,0,
 | 
				
			||||||
    114,8,0,0,0,114,1,1,0,0,171,4,0,0,114,24,
 | 
					    114,8,0,0,0,114,1,1,0,0,172,4,0,0,114,24,
 | 
				
			||||||
    0,0,0,122,30,69,120,116,101,110,115,105,111,110,70,105,
 | 
					    0,0,0,122,30,69,120,116,101,110,115,105,111,110,70,105,
 | 
				
			||||||
    108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
 | 
					    108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
 | 
				
			||||||
    114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
 | 
					    114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
    2,0,0,0,1,0,0,0,67,0,0,0,114,26,1,0,
 | 
					    2,0,0,0,1,0,0,0,67,0,0,0,114,26,1,0,
 | 
				
			||||||
    0,114,27,1,0,0,114,71,0,0,0,114,247,0,0,0,
 | 
					    0,114,27,1,0,0,114,71,0,0,0,114,247,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
				
			||||||
    203,0,0,0,175,4,0,0,114,28,1,0,0,122,32,69,
 | 
					    203,0,0,0,176,4,0,0,114,28,1,0,0,122,32,69,
 | 
				
			||||||
    120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
 | 
					    120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
 | 
				
			||||||
    101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,78,
 | 
					    101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,78,
 | 
				
			||||||
    41,14,114,150,0,0,0,114,149,0,0,0,114,151,0,0,
 | 
					    41,14,114,150,0,0,0,114,149,0,0,0,114,151,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1855,7 +1855,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    206,0,0,0,114,241,0,0,0,114,1,1,0,0,114,160,
 | 
					    206,0,0,0,114,241,0,0,0,114,1,1,0,0,114,160,
 | 
				
			||||||
    0,0,0,114,203,0,0,0,114,7,0,0,0,114,7,0,
 | 
					    0,0,0,114,203,0,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,8,0,0,0,114,30,1,0,
 | 
					    0,0,114,7,0,0,0,114,8,0,0,0,114,30,1,0,
 | 
				
			||||||
    0,128,4,0,0,115,26,0,0,0,8,0,4,2,8,6,
 | 
					    0,129,4,0,0,115,26,0,0,0,8,0,4,2,8,6,
 | 
				
			||||||
    8,4,8,4,8,3,8,8,8,6,8,6,8,4,2,4,
 | 
					    8,4,8,4,8,3,8,8,8,6,8,6,8,4,2,4,
 | 
				
			||||||
    14,1,255,128,114,30,1,0,0,99,0,0,0,0,0,0,
 | 
					    14,1,255,128,114,30,1,0,0,99,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,
 | 
					    0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,
 | 
				
			||||||
| 
						 | 
					@ -1897,7 +1897,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    112,97,116,104,95,102,105,110,100,101,114,169,4,114,143,0,
 | 
					    112,97,116,104,95,102,105,110,100,101,114,169,4,114,143,0,
 | 
				
			||||||
    0,0,114,141,0,0,0,114,65,0,0,0,90,11,112,97,
 | 
					    0,0,114,141,0,0,0,114,65,0,0,0,90,11,112,97,
 | 
				
			||||||
    116,104,95,102,105,110,100,101,114,114,7,0,0,0,114,7,
 | 
					    116,104,95,102,105,110,100,101,114,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,114,236,0,0,0,188,4,0,
 | 
					    0,0,0,114,8,0,0,0,114,236,0,0,0,189,4,0,
 | 
				
			||||||
    0,115,10,0,0,0,6,1,6,1,14,1,10,1,255,128,
 | 
					    0,115,10,0,0,0,6,1,6,1,14,1,10,1,255,128,
 | 
				
			||||||
    122,23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,
 | 
					    122,23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,
 | 
				
			||||||
    46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,
 | 
					    46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1915,7 +1915,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,114,40,1,0,0,218,3,100,111,116,90,2,109,
 | 
					    0,0,0,114,40,1,0,0,218,3,100,111,116,90,2,109,
 | 
				
			||||||
    101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
					    101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
				
			||||||
    218,23,95,102,105,110,100,95,112,97,114,101,110,116,95,112,
 | 
					    218,23,95,102,105,110,100,95,112,97,114,101,110,116,95,112,
 | 
				
			||||||
    97,116,104,95,110,97,109,101,115,194,4,0,0,115,10,0,
 | 
					    97,116,104,95,110,97,109,101,115,195,4,0,0,115,10,0,
 | 
				
			||||||
    0,0,18,2,8,1,4,2,8,3,255,128,122,38,95,78,
 | 
					    0,0,18,2,8,1,4,2,8,3,255,128,122,38,95,78,
 | 
				
			||||||
    97,109,101,115,112,97,99,101,80,97,116,104,46,95,102,105,
 | 
					    97,109,101,115,112,97,99,101,80,97,116,104,46,95,102,105,
 | 
				
			||||||
    110,100,95,112,97,114,101,110,116,95,112,97,116,104,95,110,
 | 
					    110,100,95,112,97,114,101,110,116,95,112,97,116,104,95,110,
 | 
				
			||||||
| 
						 | 
					@ -1928,7 +1928,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    143,0,0,0,90,18,112,97,114,101,110,116,95,109,111,100,
 | 
					    143,0,0,0,90,18,112,97,114,101,110,116,95,109,111,100,
 | 
				
			||||||
    117,108,101,95,110,97,109,101,90,14,112,97,116,104,95,97,
 | 
					    117,108,101,95,110,97,109,101,90,14,112,97,116,104,95,97,
 | 
				
			||||||
    116,116,114,95,110,97,109,101,114,7,0,0,0,114,7,0,
 | 
					    116,116,114,95,110,97,109,101,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,114,50,1,0,0,204,4,0,0,
 | 
					    0,0,114,8,0,0,0,114,50,1,0,0,205,4,0,0,
 | 
				
			||||||
    115,6,0,0,0,12,1,16,1,255,128,122,31,95,78,97,
 | 
					    115,6,0,0,0,12,1,16,1,255,128,122,31,95,78,97,
 | 
				
			||||||
    109,101,115,112,97,99,101,80,97,116,104,46,95,103,101,116,
 | 
					    109,101,115,112,97,99,101,80,97,116,104,46,95,103,101,116,
 | 
				
			||||||
    95,112,97,114,101,110,116,95,112,97,116,104,99,1,0,0,
 | 
					    95,112,97,114,101,110,116,95,112,97,116,104,99,1,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1944,7 +1944,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    202,0,0,0,114,49,1,0,0,41,3,114,143,0,0,0,
 | 
					    202,0,0,0,114,49,1,0,0,41,3,114,143,0,0,0,
 | 
				
			||||||
    90,11,112,97,114,101,110,116,95,112,97,116,104,114,210,0,
 | 
					    90,11,112,97,114,101,110,116,95,112,97,116,104,114,210,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
					    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,218,12,95,114,101,99,97,108,99,117,108,97,116,101,208,
 | 
					    0,218,12,95,114,101,99,97,108,99,117,108,97,116,101,209,
 | 
				
			||||||
    4,0,0,115,18,0,0,0,12,2,10,1,14,1,18,3,
 | 
					    4,0,0,115,18,0,0,0,12,2,10,1,14,1,18,3,
 | 
				
			||||||
    6,1,8,1,6,1,6,1,255,128,122,27,95,78,97,109,
 | 
					    6,1,8,1,6,1,6,1,255,128,122,27,95,78,97,109,
 | 
				
			||||||
    101,115,112,97,99,101,80,97,116,104,46,95,114,101,99,97,
 | 
					    101,115,112,97,99,101,80,97,116,104,46,95,114,101,99,97,
 | 
				
			||||||
| 
						 | 
					@ -1954,7 +1954,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,114,69,0,0,0,41,2,218,4,105,116,101,114,114,57,
 | 
					    0,114,69,0,0,0,41,2,218,4,105,116,101,114,114,57,
 | 
				
			||||||
    1,0,0,114,21,1,0,0,114,7,0,0,0,114,7,0,
 | 
					    1,0,0,114,21,1,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,218,8,95,95,105,116,101,114,95,
 | 
					    0,0,114,8,0,0,0,218,8,95,95,105,116,101,114,95,
 | 
				
			||||||
    95,221,4,0,0,243,4,0,0,0,12,1,255,128,122,23,
 | 
					    95,222,4,0,0,243,4,0,0,0,12,1,255,128,122,23,
 | 
				
			||||||
    95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
 | 
					    95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
 | 
				
			||||||
    95,105,116,101,114,95,95,99,2,0,0,0,0,0,0,0,
 | 
					    95,105,116,101,114,95,95,99,2,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,
 | 
					    0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1962,7 +1962,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,114,69,0,0,0,169,1,114,57,1,0,0,41,2,114,
 | 
					    0,114,69,0,0,0,169,1,114,57,1,0,0,41,2,114,
 | 
				
			||||||
    143,0,0,0,218,5,105,110,100,101,120,114,7,0,0,0,
 | 
					    143,0,0,0,218,5,105,110,100,101,120,114,7,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,8,0,0,0,218,11,95,95,103,101,
 | 
					    114,7,0,0,0,114,8,0,0,0,218,11,95,95,103,101,
 | 
				
			||||||
    116,105,116,101,109,95,95,224,4,0,0,114,61,1,0,0,
 | 
					    116,105,116,101,109,95,95,225,4,0,0,114,61,1,0,0,
 | 
				
			||||||
    122,26,95,78,97,109,101,115,112,97,99,101,80,97,116,104,
 | 
					    122,26,95,78,97,109,101,115,112,97,99,101,80,97,116,104,
 | 
				
			||||||
    46,95,95,103,101,116,105,116,101,109,95,95,99,3,0,0,
 | 
					    46,95,95,103,101,116,105,116,101,109,95,95,99,3,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
 | 
					    0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1971,14 +1971,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    49,1,0,0,41,3,114,143,0,0,0,114,63,1,0,0,
 | 
					    49,1,0,0,41,3,114,143,0,0,0,114,63,1,0,0,
 | 
				
			||||||
    114,65,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
 | 
					    114,65,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    8,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95,
 | 
					    8,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95,
 | 
				
			||||||
    95,227,4,0,0,115,4,0,0,0,14,1,255,128,122,26,
 | 
					    95,228,4,0,0,115,4,0,0,0,14,1,255,128,122,26,
 | 
				
			||||||
    95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
 | 
					    95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
 | 
				
			||||||
    95,115,101,116,105,116,101,109,95,95,99,1,0,0,0,0,
 | 
					    95,115,101,116,105,116,101,109,95,95,99,1,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,
 | 
					    0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,
 | 
				
			||||||
    0,0,0,114,58,1,0,0,114,69,0,0,0,41,2,114,
 | 
					    0,0,0,114,58,1,0,0,114,69,0,0,0,41,2,114,
 | 
				
			||||||
    4,0,0,0,114,57,1,0,0,114,21,1,0,0,114,7,
 | 
					    4,0,0,0,114,57,1,0,0,114,21,1,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,7,0,0,0,114,8,0,0,0,218,7,95,
 | 
					    0,0,0,114,7,0,0,0,114,8,0,0,0,218,7,95,
 | 
				
			||||||
    95,108,101,110,95,95,230,4,0,0,114,61,1,0,0,122,
 | 
					    95,108,101,110,95,95,231,4,0,0,114,61,1,0,0,122,
 | 
				
			||||||
    22,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
 | 
					    22,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
 | 
				
			||||||
    95,95,108,101,110,95,95,99,1,0,0,0,0,0,0,0,
 | 
					    95,95,108,101,110,95,95,99,1,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,
 | 
					    0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -1987,7 +1987,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    80,97,116,104,40,123,33,114,125,41,41,2,114,89,0,0,
 | 
					    80,97,116,104,40,123,33,114,125,41,41,2,114,89,0,0,
 | 
				
			||||||
    0,114,49,1,0,0,114,21,1,0,0,114,7,0,0,0,
 | 
					    0,114,49,1,0,0,114,21,1,0,0,114,7,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,8,0,0,0,218,8,95,95,114,101,
 | 
					    114,7,0,0,0,114,8,0,0,0,218,8,95,95,114,101,
 | 
				
			||||||
    112,114,95,95,233,4,0,0,114,61,1,0,0,122,23,95,
 | 
					    112,114,95,95,234,4,0,0,114,61,1,0,0,122,23,95,
 | 
				
			||||||
    78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,
 | 
					    78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,
 | 
				
			||||||
    114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0,
 | 
					    114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,
 | 
					    0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,
 | 
				
			||||||
| 
						 | 
					@ -1995,7 +1995,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    114,69,0,0,0,114,62,1,0,0,169,2,114,143,0,0,
 | 
					    114,69,0,0,0,114,62,1,0,0,169,2,114,143,0,0,
 | 
				
			||||||
    0,218,4,105,116,101,109,114,7,0,0,0,114,7,0,0,
 | 
					    0,218,4,105,116,101,109,114,7,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,8,0,0,0,218,12,95,95,99,111,110,116,97,105,
 | 
					    0,114,8,0,0,0,218,12,95,95,99,111,110,116,97,105,
 | 
				
			||||||
    110,115,95,95,236,4,0,0,114,61,1,0,0,122,27,95,
 | 
					    110,115,95,95,237,4,0,0,114,61,1,0,0,122,27,95,
 | 
				
			||||||
    78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,
 | 
					    78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,
 | 
				
			||||||
    99,111,110,116,97,105,110,115,95,95,99,2,0,0,0,0,
 | 
					    99,111,110,116,97,105,110,115,95,95,99,2,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,
 | 
					    0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,
 | 
				
			||||||
| 
						 | 
					@ -2003,7 +2003,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    161,1,1,0,100,0,83,0,114,69,0,0,0,41,2,114,
 | 
					    161,1,1,0,100,0,83,0,114,69,0,0,0,41,2,114,
 | 
				
			||||||
    49,1,0,0,114,61,0,0,0,114,69,1,0,0,114,7,
 | 
					    49,1,0,0,114,61,0,0,0,114,69,1,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,7,0,0,0,114,8,0,0,0,114,61,0,
 | 
					    0,0,0,114,7,0,0,0,114,8,0,0,0,114,61,0,
 | 
				
			||||||
    0,0,239,4,0,0,243,4,0,0,0,16,1,255,128,122,
 | 
					    0,0,240,4,0,0,243,4,0,0,0,16,1,255,128,122,
 | 
				
			||||||
    21,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
 | 
					    21,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
 | 
				
			||||||
    97,112,112,101,110,100,78,41,15,114,150,0,0,0,114,149,
 | 
					    97,112,112,101,110,100,78,41,15,114,150,0,0,0,114,149,
 | 
				
			||||||
    0,0,0,114,151,0,0,0,114,152,0,0,0,114,236,0,
 | 
					    0,0,0,114,151,0,0,0,114,152,0,0,0,114,236,0,
 | 
				
			||||||
| 
						 | 
					@ -2011,7 +2011,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,114,60,1,0,0,114,64,1,0,0,114,65,1,0,0,
 | 
					    0,114,60,1,0,0,114,64,1,0,0,114,65,1,0,0,
 | 
				
			||||||
    114,66,1,0,0,114,68,1,0,0,114,71,1,0,0,114,
 | 
					    114,66,1,0,0,114,68,1,0,0,114,71,1,0,0,114,
 | 
				
			||||||
    61,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,
 | 
					    61,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,114,47,1,0,0,181,4,0,
 | 
					    0,0,0,114,8,0,0,0,114,47,1,0,0,182,4,0,
 | 
				
			||||||
    0,115,28,0,0,0,8,0,4,1,8,6,8,6,8,10,
 | 
					    0,115,28,0,0,0,8,0,4,1,8,6,8,6,8,10,
 | 
				
			||||||
    8,4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,
 | 
					    8,4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,
 | 
				
			||||||
    255,128,114,47,1,0,0,99,0,0,0,0,0,0,0,0,
 | 
					    255,128,114,47,1,0,0,99,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2028,7 +2028,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,124,1,124,2,124,3,131,3,124,0,95,1,100,0,83,
 | 
					    0,124,1,124,2,124,3,131,3,124,0,95,1,100,0,83,
 | 
				
			||||||
    0,114,69,0,0,0,41,2,114,47,1,0,0,114,49,1,
 | 
					    0,114,69,0,0,0,41,2,114,47,1,0,0,114,49,1,
 | 
				
			||||||
    0,0,114,53,1,0,0,114,7,0,0,0,114,7,0,0,
 | 
					    0,0,114,53,1,0,0,114,7,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,8,0,0,0,114,236,0,0,0,245,4,0,0,115,
 | 
					    0,114,8,0,0,0,114,236,0,0,0,246,4,0,0,115,
 | 
				
			||||||
    4,0,0,0,18,1,255,128,122,25,95,78,97,109,101,115,
 | 
					    4,0,0,0,18,1,255,128,122,25,95,78,97,109,101,115,
 | 
				
			||||||
    112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,105,
 | 
					    112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,105,
 | 
				
			||||||
    116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,
 | 
					    116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2052,21 +2052,21 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    41,5,114,99,0,0,0,114,100,0,0,0,114,101,0,0,
 | 
					    41,5,114,99,0,0,0,114,100,0,0,0,114,101,0,0,
 | 
				
			||||||
    0,114,89,0,0,0,114,150,0,0,0,41,1,114,244,0,
 | 
					    0,114,89,0,0,0,114,150,0,0,0,41,1,114,244,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
					    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,218,11,109,111,100,117,108,101,95,114,101,112,114,248,4,
 | 
					    0,218,11,109,111,100,117,108,101,95,114,101,112,114,249,4,
 | 
				
			||||||
    0,0,115,10,0,0,0,6,7,2,1,4,255,12,2,255,
 | 
					    0,0,115,10,0,0,0,6,7,2,1,4,255,12,2,255,
 | 
				
			||||||
    128,122,28,95,78,97,109,101,115,112,97,99,101,76,111,97,
 | 
					    128,122,28,95,78,97,109,101,115,112,97,99,101,76,111,97,
 | 
				
			||||||
    100,101,114,46,109,111,100,117,108,101,95,114,101,112,114,99,
 | 
					    100,101,114,46,109,111,100,117,108,101,95,114,101,112,114,99,
 | 
				
			||||||
    2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
 | 
					    2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
 | 
				
			||||||
    1,0,0,0,67,0,0,0,114,23,0,0,0,41,2,78,
 | 
					    1,0,0,0,67,0,0,0,114,23,0,0,0,41,2,78,
 | 
				
			||||||
    84,114,7,0,0,0,114,247,0,0,0,114,7,0,0,0,
 | 
					    84,114,7,0,0,0,114,247,0,0,0,114,7,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,8,0,0,0,114,206,0,0,0,3,
 | 
					    114,7,0,0,0,114,8,0,0,0,114,206,0,0,0,4,
 | 
				
			||||||
    5,0,0,243,4,0,0,0,4,1,255,128,122,27,95,78,
 | 
					    5,0,0,243,4,0,0,0,4,1,255,128,122,27,95,78,
 | 
				
			||||||
    97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,105,
 | 
					    97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,105,
 | 
				
			||||||
    115,95,112,97,99,107,97,103,101,99,2,0,0,0,0,0,
 | 
					    115,95,112,97,99,107,97,103,101,99,2,0,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,
 | 
					    0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,
 | 
				
			||||||
    0,0,114,23,0,0,0,41,2,78,114,10,0,0,0,114,
 | 
					    0,0,114,23,0,0,0,41,2,78,114,10,0,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7,
 | 
					    7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,114,1,1,0,0,6,5,0,
 | 
					    0,0,0,114,8,0,0,0,114,1,1,0,0,7,5,0,
 | 
				
			||||||
    0,114,75,1,0,0,122,27,95,78,97,109,101,115,112,97,
 | 
					    0,114,75,1,0,0,122,27,95,78,97,109,101,115,112,97,
 | 
				
			||||||
    99,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
 | 
					    99,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
 | 
				
			||||||
    114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
 | 
					    114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2076,20 +2076,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    110,103,62,114,243,0,0,0,84,41,1,114,3,1,0,0,
 | 
					    110,103,62,114,243,0,0,0,84,41,1,114,3,1,0,0,
 | 
				
			||||||
    41,1,114,4,1,0,0,114,247,0,0,0,114,7,0,0,
 | 
					    41,1,114,4,1,0,0,114,247,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,8,0,0,0,114,241,0,0,0,
 | 
					    0,114,7,0,0,0,114,8,0,0,0,114,241,0,0,0,
 | 
				
			||||||
    9,5,0,0,114,72,1,0,0,122,25,95,78,97,109,101,
 | 
					    10,5,0,0,114,72,1,0,0,122,25,95,78,97,109,101,
 | 
				
			||||||
    115,112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,
 | 
					    115,112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,
 | 
				
			||||||
    99,111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,
 | 
					    99,111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
    0,2,0,0,0,1,0,0,0,67,0,0,0,114,23,0,
 | 
					    0,2,0,0,0,1,0,0,0,67,0,0,0,114,23,0,
 | 
				
			||||||
    0,0,114,237,0,0,0,114,7,0,0,0,114,238,0,0,
 | 
					    0,0,114,237,0,0,0,114,7,0,0,0,114,238,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
					    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
				
			||||||
    114,239,0,0,0,12,5,0,0,114,240,0,0,0,122,30,
 | 
					    114,239,0,0,0,13,5,0,0,114,240,0,0,0,122,30,
 | 
				
			||||||
    95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,
 | 
					    95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,
 | 
				
			||||||
    46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,2,
 | 
					    46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,2,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,
 | 
				
			||||||
    0,0,0,67,0,0,0,115,4,0,0,0,100,0,83,0,
 | 
					    0,0,0,67,0,0,0,115,4,0,0,0,100,0,83,0,
 | 
				
			||||||
    114,69,0,0,0,114,7,0,0,0,114,42,1,0,0,114,
 | 
					    114,69,0,0,0,114,7,0,0,0,114,42,1,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,245,
 | 
					    7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,245,
 | 
				
			||||||
    0,0,0,15,5,0,0,114,75,1,0,0,122,28,95,78,
 | 
					    0,0,0,16,5,0,0,114,75,1,0,0,122,28,95,78,
 | 
				
			||||||
    97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,
 | 
					    97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,
 | 
				
			||||||
    120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,
 | 
					    120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,
 | 
					    0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,
 | 
				
			||||||
| 
						 | 
					@ -2107,7 +2107,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    78,41,4,114,159,0,0,0,114,173,0,0,0,114,49,1,
 | 
					    78,41,4,114,159,0,0,0,114,173,0,0,0,114,49,1,
 | 
				
			||||||
    0,0,114,246,0,0,0,114,247,0,0,0,114,7,0,0,
 | 
					    0,0,114,246,0,0,0,114,247,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,8,0,0,0,114,248,0,0,0,
 | 
					    0,114,7,0,0,0,114,8,0,0,0,114,248,0,0,0,
 | 
				
			||||||
    18,5,0,0,115,10,0,0,0,6,7,4,1,4,255,12,
 | 
					    19,5,0,0,115,10,0,0,0,6,7,4,1,4,255,12,
 | 
				
			||||||
    3,255,128,122,28,95,78,97,109,101,115,112,97,99,101,76,
 | 
					    3,255,128,122,28,95,78,97,109,101,115,112,97,99,101,76,
 | 
				
			||||||
    111,97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,
 | 
					    111,97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,
 | 
				
			||||||
    101,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,
 | 
					    101,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,
 | 
				
			||||||
| 
						 | 
					@ -2118,7 +2118,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    41,3,114,32,1,0,0,114,76,1,0,0,114,49,1,0,
 | 
					    41,3,114,32,1,0,0,114,76,1,0,0,114,49,1,0,
 | 
				
			||||||
    0,41,3,114,143,0,0,0,114,244,0,0,0,114,76,1,
 | 
					    0,41,3,114,143,0,0,0,114,244,0,0,0,114,76,1,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
					    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,114,33,1,0,0,30,5,0,0,115,6,0,0,0,12,
 | 
					    0,114,33,1,0,0,31,5,0,0,115,6,0,0,0,12,
 | 
				
			||||||
    1,10,1,255,128,122,36,95,78,97,109,101,115,112,97,99,
 | 
					    1,10,1,255,128,122,36,95,78,97,109,101,115,112,97,99,
 | 
				
			||||||
    101,76,111,97,100,101,114,46,103,101,116,95,114,101,115,111,
 | 
					    101,76,111,97,100,101,114,46,103,101,116,95,114,101,115,111,
 | 
				
			||||||
    117,114,99,101,95,114,101,97,100,101,114,78,41,13,114,150,
 | 
					    117,114,99,101,95,114,101,97,100,101,114,78,41,13,114,150,
 | 
				
			||||||
| 
						 | 
					@ -2127,7 +2127,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,114,1,1,0,0,114,241,0,0,0,114,239,0,0,0,
 | 
					    0,114,1,1,0,0,114,241,0,0,0,114,239,0,0,0,
 | 
				
			||||||
    114,245,0,0,0,114,248,0,0,0,114,33,1,0,0,114,
 | 
					    114,245,0,0,0,114,248,0,0,0,114,33,1,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
					    7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,114,73,1,0,0,244,4,0,0,115,24,0,0,
 | 
					    0,0,0,114,73,1,0,0,245,4,0,0,115,24,0,0,
 | 
				
			||||||
    0,8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,
 | 
					    0,8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,
 | 
				
			||||||
    3,8,3,8,3,12,12,255,128,114,73,1,0,0,99,0,
 | 
					    3,8,3,8,3,12,12,255,128,114,73,1,0,0,99,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
 | 
					    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
 | 
				
			||||||
| 
						 | 
					@ -2164,7 +2164,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    99,97,99,104,101,218,5,105,116,101,109,115,114,153,0,0,
 | 
					    99,97,99,104,101,218,5,105,116,101,109,115,114,153,0,0,
 | 
				
			||||||
    0,114,78,1,0,0,41,2,114,141,0,0,0,218,6,102,
 | 
					    0,114,78,1,0,0,41,2,114,141,0,0,0,218,6,102,
 | 
				
			||||||
    105,110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,
 | 
					    105,110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    8,0,0,0,114,78,1,0,0,41,5,0,0,115,16,0,
 | 
					    8,0,0,0,114,78,1,0,0,42,5,0,0,115,16,0,
 | 
				
			||||||
    0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252,
 | 
					    0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252,
 | 
				
			||||||
    255,128,122,28,80,97,116,104,70,105,110,100,101,114,46,105,
 | 
					    255,128,122,28,80,97,116,104,70,105,110,100,101,114,46,105,
 | 
				
			||||||
    110,118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,
 | 
					    110,118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,
 | 
				
			||||||
| 
						 | 
					@ -2184,7 +2184,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,114,162,0,0,0,114,142,0,0,0,41,2,114,
 | 
					    0,0,0,114,162,0,0,0,114,142,0,0,0,41,2,114,
 | 
				
			||||||
    65,0,0,0,90,4,104,111,111,107,114,7,0,0,0,114,
 | 
					    65,0,0,0,90,4,104,111,111,107,114,7,0,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,
 | 
					    7,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,
 | 
				
			||||||
    95,104,111,111,107,115,51,5,0,0,115,20,0,0,0,16,
 | 
					    95,104,111,111,107,115,52,5,0,0,115,20,0,0,0,16,
 | 
				
			||||||
    3,12,1,10,1,2,1,14,1,12,1,4,1,4,2,2,
 | 
					    3,12,1,10,1,2,1,14,1,12,1,4,1,4,2,2,
 | 
				
			||||||
    253,255,128,122,22,80,97,116,104,70,105,110,100,101,114,46,
 | 
					    253,255,128,122,22,80,97,116,104,70,105,110,100,101,114,46,
 | 
				
			||||||
    95,112,97,116,104,95,104,111,111,107,115,99,2,0,0,0,
 | 
					    95,112,97,116,104,95,104,111,111,107,115,99,2,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2216,7 +2216,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,41,3,114,221,0,0,0,114,65,0,0,0,114,82,1,
 | 
					    0,41,3,114,221,0,0,0,114,65,0,0,0,114,82,1,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
					    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
 | 
				
			||||||
    0,218,20,95,112,97,116,104,95,105,109,112,111,114,116,101,
 | 
					    0,218,20,95,112,97,116,104,95,105,109,112,111,114,116,101,
 | 
				
			||||||
    114,95,99,97,99,104,101,64,5,0,0,115,30,0,0,0,
 | 
					    114,95,99,97,99,104,101,65,5,0,0,115,30,0,0,0,
 | 
				
			||||||
    8,8,2,1,12,1,12,1,6,3,2,1,12,1,4,4,
 | 
					    8,8,2,1,12,1,12,1,6,3,2,1,12,1,4,4,
 | 
				
			||||||
    12,253,10,1,12,1,4,1,2,253,2,250,255,128,122,31,
 | 
					    12,253,10,1,12,1,4,1,2,253,2,250,255,128,122,31,
 | 
				
			||||||
    80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,
 | 
					    80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,
 | 
				
			||||||
| 
						 | 
					@ -2247,7 +2247,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    114,166,0,0,0,114,164,0,0,0,114,165,0,0,0,114,
 | 
					    114,166,0,0,0,114,164,0,0,0,114,165,0,0,0,114,
 | 
				
			||||||
    210,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
					    210,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,218,16,95,108,101,103,97,99,121,95,103,101,116,
 | 
					    0,0,0,218,16,95,108,101,103,97,99,121,95,103,101,116,
 | 
				
			||||||
    95,115,112,101,99,86,5,0,0,115,28,0,0,0,10,4,
 | 
					    95,115,112,101,99,87,5,0,0,115,28,0,0,0,10,4,
 | 
				
			||||||
    16,1,12,2,16,1,16,2,12,2,10,1,4,1,8,1,
 | 
					    16,1,12,2,16,1,16,2,12,2,10,1,4,1,8,1,
 | 
				
			||||||
    12,1,12,1,6,1,4,1,255,128,122,27,80,97,116,104,
 | 
					    12,1,12,1,6,1,4,1,255,128,122,27,80,97,116,104,
 | 
				
			||||||
    70,105,110,100,101,114,46,95,108,101,103,97,99,121,95,103,
 | 
					    70,105,110,100,101,114,46,95,108,101,103,97,99,121,95,103,
 | 
				
			||||||
| 
						 | 
					@ -2279,7 +2279,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    95,112,97,116,104,90,5,101,110,116,114,121,114,82,1,0,
 | 
					    95,112,97,116,104,90,5,101,110,116,114,121,114,82,1,0,
 | 
				
			||||||
    0,114,210,0,0,0,114,165,0,0,0,114,7,0,0,0,
 | 
					    0,114,210,0,0,0,114,165,0,0,0,114,7,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,8,0,0,0,218,9,95,103,101,116,
 | 
					    114,7,0,0,0,114,8,0,0,0,218,9,95,103,101,116,
 | 
				
			||||||
    95,115,112,101,99,107,5,0,0,115,44,0,0,0,4,5,
 | 
					    95,115,112,101,99,108,5,0,0,115,44,0,0,0,4,5,
 | 
				
			||||||
    8,1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,
 | 
					    8,1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,
 | 
				
			||||||
    8,1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,
 | 
					    8,1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,
 | 
				
			||||||
    2,128,12,2,6,1,4,1,255,128,122,20,80,97,116,104,
 | 
					    2,128,12,2,6,1,4,1,255,128,122,20,80,97,116,104,
 | 
				
			||||||
| 
						 | 
					@ -2306,7 +2306,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    1,0,0,41,6,114,221,0,0,0,114,163,0,0,0,114,
 | 
					    1,0,0,41,6,114,221,0,0,0,114,163,0,0,0,114,
 | 
				
			||||||
    65,0,0,0,114,225,0,0,0,114,210,0,0,0,114,90,
 | 
					    65,0,0,0,114,225,0,0,0,114,210,0,0,0,114,90,
 | 
				
			||||||
    1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
 | 
					    1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
 | 
				
			||||||
    0,0,114,226,0,0,0,139,5,0,0,115,28,0,0,0,
 | 
					    0,0,114,226,0,0,0,140,5,0,0,115,28,0,0,0,
 | 
				
			||||||
    8,6,6,1,14,1,8,1,4,1,10,1,6,1,4,1,
 | 
					    8,6,6,1,14,1,8,1,4,1,10,1,6,1,4,1,
 | 
				
			||||||
    6,3,16,1,4,1,4,2,4,2,255,128,122,20,80,97,
 | 
					    6,3,16,1,4,1,4,2,4,2,255,128,122,20,80,97,
 | 
				
			||||||
    116,104,70,105,110,100,101,114,46,102,105,110,100,95,115,112,
 | 
					    116,104,70,105,110,100,101,114,46,102,105,110,100,95,115,112,
 | 
				
			||||||
| 
						 | 
					@ -2333,7 +2333,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100,
 | 
					    110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100,
 | 
				
			||||||
    95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78,
 | 
					    95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78,
 | 
				
			||||||
    114,227,0,0,0,114,228,0,0,0,114,7,0,0,0,114,
 | 
					    114,227,0,0,0,114,228,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,8,0,0,0,114,229,0,0,0,163,5,
 | 
					    7,0,0,0,114,8,0,0,0,114,229,0,0,0,164,5,
 | 
				
			||||||
    0,0,115,16,0,0,0,6,8,2,2,4,254,12,3,8,
 | 
					    0,0,115,16,0,0,0,6,8,2,2,4,254,12,3,8,
 | 
				
			||||||
    1,4,1,6,1,255,128,122,22,80,97,116,104,70,105,110,
 | 
					    1,4,1,6,1,255,128,122,22,80,97,116,104,70,105,110,
 | 
				
			||||||
    100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,
 | 
					    100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,
 | 
				
			||||||
| 
						 | 
					@ -2366,7 +2366,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    115,116,114,105,98,117,116,105,111,110,115,41,3,114,144,0,
 | 
					    115,116,114,105,98,117,116,105,111,110,115,41,3,114,144,0,
 | 
				
			||||||
    0,0,114,145,0,0,0,114,92,1,0,0,114,7,0,0,
 | 
					    0,0,114,145,0,0,0,114,92,1,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,8,0,0,0,114,93,1,0,0,
 | 
					    0,114,7,0,0,0,114,8,0,0,0,114,93,1,0,0,
 | 
				
			||||||
    179,5,0,0,115,6,0,0,0,12,10,16,1,255,128,122,
 | 
					    180,5,0,0,115,6,0,0,0,12,10,16,1,255,128,122,
 | 
				
			||||||
    29,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,
 | 
					    29,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,
 | 
				
			||||||
    95,100,105,115,116,114,105,98,117,116,105,111,110,115,114,69,
 | 
					    95,100,105,115,116,114,105,98,117,116,105,111,110,115,114,69,
 | 
				
			||||||
    0,0,0,114,230,0,0,0,41,14,114,150,0,0,0,114,
 | 
					    0,0,0,114,230,0,0,0,41,14,114,150,0,0,0,114,
 | 
				
			||||||
| 
						 | 
					@ -2375,7 +2375,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,114,87,1,0,0,114,88,1,0,0,114,91,1,0,
 | 
					    0,0,114,87,1,0,0,114,88,1,0,0,114,91,1,0,
 | 
				
			||||||
    0,114,226,0,0,0,114,229,0,0,0,114,93,1,0,0,
 | 
					    0,114,226,0,0,0,114,229,0,0,0,114,93,1,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    8,0,0,0,114,77,1,0,0,37,5,0,0,115,38,0,
 | 
					    8,0,0,0,114,77,1,0,0,38,5,0,0,115,38,0,
 | 
				
			||||||
    0,0,8,0,4,2,2,2,10,1,2,9,10,1,2,12,
 | 
					    0,0,8,0,4,2,2,2,10,1,2,9,10,1,2,12,
 | 
				
			||||||
    10,1,2,21,10,1,2,20,12,1,2,31,12,1,2,23,
 | 
					    10,1,2,21,10,1,2,20,12,1,2,31,12,1,2,23,
 | 
				
			||||||
    12,1,2,15,14,1,255,128,114,77,1,0,0,99,0,0,
 | 
					    12,1,2,15,14,1,255,128,114,77,1,0,0,99,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2422,7 +2422,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    7,125,1,124,1,136,0,102,2,86,0,1,0,113,2,100,
 | 
					    7,125,1,124,1,136,0,102,2,86,0,1,0,113,2,100,
 | 
				
			||||||
    0,83,0,114,69,0,0,0,114,7,0,0,0,114,43,1,
 | 
					    0,83,0,114,69,0,0,0,114,7,0,0,0,114,43,1,
 | 
				
			||||||
    0,0,169,1,114,164,0,0,0,114,7,0,0,0,114,8,
 | 
					    0,0,169,1,114,164,0,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,114,9,0,0,0,208,5,0,0,115,6,0,0,
 | 
					    0,0,0,114,9,0,0,0,209,5,0,0,115,6,0,0,
 | 
				
			||||||
    0,6,128,18,0,255,128,122,38,70,105,108,101,70,105,110,
 | 
					    0,6,128,18,0,255,128,122,38,70,105,108,101,70,105,110,
 | 
				
			||||||
    100,101,114,46,95,95,105,110,105,116,95,95,46,60,108,111,
 | 
					    100,101,114,46,95,95,105,110,105,116,95,95,46,60,108,111,
 | 
				
			||||||
    99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,114,
 | 
					    99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,114,
 | 
				
			||||||
| 
						 | 
					@ -2436,7 +2436,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    65,0,0,0,218,14,108,111,97,100,101,114,95,100,101,116,
 | 
					    65,0,0,0,218,14,108,111,97,100,101,114,95,100,101,116,
 | 
				
			||||||
    97,105,108,115,90,7,108,111,97,100,101,114,115,114,212,0,
 | 
					    97,105,108,115,90,7,108,111,97,100,101,114,115,114,212,0,
 | 
				
			||||||
    0,0,114,7,0,0,0,114,95,1,0,0,114,8,0,0,
 | 
					    0,0,114,7,0,0,0,114,95,1,0,0,114,8,0,0,
 | 
				
			||||||
    0,114,236,0,0,0,202,5,0,0,115,22,0,0,0,4,
 | 
					    0,114,236,0,0,0,203,5,0,0,115,22,0,0,0,4,
 | 
				
			||||||
    4,12,1,26,1,6,1,10,2,10,1,18,1,6,1,8,
 | 
					    4,12,1,26,1,6,1,10,2,10,1,18,1,6,1,8,
 | 
				
			||||||
    1,12,1,255,128,122,19,70,105,108,101,70,105,110,100,101,
 | 
					    1,12,1,255,128,122,19,70,105,108,101,70,105,110,100,101,
 | 
				
			||||||
    114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,
 | 
					    114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2446,7 +2446,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    32,116,104,101,32,100,105,114,101,99,116,111,114,121,32,109,
 | 
					    32,116,104,101,32,100,105,114,101,99,116,111,114,121,32,109,
 | 
				
			||||||
    116,105,109,101,46,114,130,0,0,0,78,41,1,114,97,1,
 | 
					    116,105,109,101,46,114,130,0,0,0,78,41,1,114,97,1,
 | 
				
			||||||
    0,0,114,21,1,0,0,114,7,0,0,0,114,7,0,0,
 | 
					    0,0,114,21,1,0,0,114,7,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,8,0,0,0,114,78,1,0,0,218,5,0,0,114,
 | 
					    0,114,8,0,0,0,114,78,1,0,0,219,5,0,0,114,
 | 
				
			||||||
    81,0,0,0,122,28,70,105,108,101,70,105,110,100,101,114,
 | 
					    81,0,0,0,122,28,70,105,108,101,70,105,110,100,101,114,
 | 
				
			||||||
    46,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104,
 | 
					    46,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104,
 | 
				
			||||||
    101,115,99,2,0,0,0,0,0,0,0,0,0,0,0,3,
 | 
					    101,115,99,2,0,0,0,0,0,0,0,0,0,0,0,3,
 | 
				
			||||||
| 
						 | 
					@ -2477,7 +2477,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,114,101,0,0,0,114,226,0,0,0,114,164,0,
 | 
					    0,0,0,114,101,0,0,0,114,226,0,0,0,114,164,0,
 | 
				
			||||||
    0,0,114,202,0,0,0,41,3,114,143,0,0,0,114,163,
 | 
					    0,0,114,202,0,0,0,41,3,114,143,0,0,0,114,163,
 | 
				
			||||||
    0,0,0,114,210,0,0,0,114,7,0,0,0,114,7,0,
 | 
					    0,0,0,114,210,0,0,0,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,114,161,0,0,0,224,5,0,0,
 | 
					    0,0,114,8,0,0,0,114,161,0,0,0,225,5,0,0,
 | 
				
			||||||
    115,16,0,0,0,6,7,2,2,4,254,10,3,8,1,8,
 | 
					    115,16,0,0,0,6,7,2,2,4,254,10,3,8,1,8,
 | 
				
			||||||
    1,16,1,255,128,122,22,70,105,108,101,70,105,110,100,101,
 | 
					    1,16,1,255,128,122,22,70,105,108,101,70,105,110,100,101,
 | 
				
			||||||
    114,46,102,105,110,100,95,108,111,97,100,101,114,99,6,0,
 | 
					    114,46,102,105,110,100,95,108,111,97,100,101,114,99,6,0,
 | 
				
			||||||
| 
						 | 
					@ -2488,7 +2488,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    213,0,0,0,41,7,114,143,0,0,0,114,211,0,0,0,
 | 
					    213,0,0,0,41,7,114,143,0,0,0,114,211,0,0,0,
 | 
				
			||||||
    114,163,0,0,0,114,65,0,0,0,90,4,115,109,115,108,
 | 
					    114,163,0,0,0,114,65,0,0,0,90,4,115,109,115,108,
 | 
				
			||||||
    114,225,0,0,0,114,164,0,0,0,114,7,0,0,0,114,
 | 
					    114,225,0,0,0,114,164,0,0,0,114,7,0,0,0,114,
 | 
				
			||||||
    7,0,0,0,114,8,0,0,0,114,91,1,0,0,239,5,
 | 
					    7,0,0,0,114,8,0,0,0,114,91,1,0,0,240,5,
 | 
				
			||||||
    0,0,115,10,0,0,0,10,1,8,1,2,1,6,255,255,
 | 
					    0,0,115,10,0,0,0,10,1,8,1,2,1,6,255,255,
 | 
				
			||||||
    128,122,20,70,105,108,101,70,105,110,100,101,114,46,95,103,
 | 
					    128,122,20,70,105,108,101,70,105,110,100,101,114,46,95,103,
 | 
				
			||||||
    101,116,95,115,112,101,99,78,99,3,0,0,0,0,0,0,
 | 
					    101,116,95,115,112,101,99,78,99,3,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2545,7 +2545,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,90,13,105,110,105,116,95,102,105,108,101,110,97,109,
 | 
					    0,0,90,13,105,110,105,116,95,102,105,108,101,110,97,109,
 | 
				
			||||||
    101,90,9,102,117,108,108,95,112,97,116,104,114,210,0,0,
 | 
					    101,90,9,102,117,108,108,95,112,97,116,104,114,210,0,0,
 | 
				
			||||||
    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
					    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
 | 
				
			||||||
    114,226,0,0,0,244,5,0,0,115,88,0,0,0,4,5,
 | 
					    114,226,0,0,0,245,5,0,0,115,88,0,0,0,4,5,
 | 
				
			||||||
    14,1,2,1,24,1,12,1,6,1,10,1,8,1,6,1,
 | 
					    14,1,2,1,24,1,12,1,6,1,10,1,8,1,6,1,
 | 
				
			||||||
    6,2,6,1,10,1,6,2,4,1,8,2,12,1,14,1,
 | 
					    6,2,6,1,10,1,6,2,4,1,8,2,12,1,14,1,
 | 
				
			||||||
    8,1,10,1,8,1,24,1,2,255,8,5,14,2,2,1,
 | 
					    8,1,10,1,8,1,24,1,2,255,8,5,14,2,2,1,
 | 
				
			||||||
| 
						 | 
					@ -2577,7 +2577,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,93,6,125,1,124,1,160,0,161,0,146,2,113,2,83,
 | 
					    0,93,6,125,1,124,1,160,0,161,0,146,2,113,2,83,
 | 
				
			||||||
    0,114,7,0,0,0,41,1,114,131,0,0,0,41,2,114,
 | 
					    0,114,7,0,0,0,41,1,114,131,0,0,0,41,2,114,
 | 
				
			||||||
    5,0,0,0,90,2,102,110,114,7,0,0,0,114,7,0,
 | 
					    5,0,0,0,90,2,102,110,114,7,0,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,8,0,0,0,114,13,0,0,0,68,6,0,0,
 | 
					    0,0,114,8,0,0,0,114,13,0,0,0,69,6,0,0,
 | 
				
			||||||
    115,4,0,0,0,20,0,255,128,122,41,70,105,108,101,70,
 | 
					    115,4,0,0,0,20,0,255,128,122,41,70,105,108,101,70,
 | 
				
			||||||
    105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,104,
 | 
					    105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,104,
 | 
				
			||||||
    101,46,60,108,111,99,97,108,115,62,46,60,115,101,116,99,
 | 
					    101,46,60,108,111,99,97,108,115,62,46,60,115,101,116,99,
 | 
				
			||||||
| 
						 | 
					@ -2594,7 +2594,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    102,102,105,120,95,99,111,110,116,101,110,116,115,114,70,1,
 | 
					    102,102,105,120,95,99,111,110,116,101,110,116,115,114,70,1,
 | 
				
			||||||
    0,0,114,141,0,0,0,114,54,1,0,0,114,44,1,0,
 | 
					    0,0,114,141,0,0,0,114,54,1,0,0,114,44,1,0,
 | 
				
			||||||
    0,90,8,110,101,119,95,110,97,109,101,114,7,0,0,0,
 | 
					    0,90,8,110,101,119,95,110,97,109,101,114,7,0,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,8,0,0,0,114,102,1,0,0,39,
 | 
					    114,7,0,0,0,114,8,0,0,0,114,102,1,0,0,40,
 | 
				
			||||||
    6,0,0,115,40,0,0,0,6,2,2,1,22,1,18,1,
 | 
					    6,0,0,115,40,0,0,0,6,2,2,1,22,1,18,1,
 | 
				
			||||||
    6,3,12,3,12,1,6,7,8,1,16,1,4,1,18,1,
 | 
					    6,3,12,3,12,1,6,7,8,1,16,1,4,1,18,1,
 | 
				
			||||||
    4,2,12,1,6,1,12,1,20,1,4,255,2,233,255,128,
 | 
					    4,2,12,1,6,1,12,1,20,1,4,255,2,233,255,128,
 | 
				
			||||||
| 
						 | 
					@ -2633,7 +2633,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,0,0,114,142,0,0,0,114,71,0,0,0,169,2,114,
 | 
					    0,0,0,114,142,0,0,0,114,71,0,0,0,169,2,114,
 | 
				
			||||||
    221,0,0,0,114,101,1,0,0,114,7,0,0,0,114,8,
 | 
					    221,0,0,0,114,101,1,0,0,114,7,0,0,0,114,8,
 | 
				
			||||||
    0,0,0,218,24,112,97,116,104,95,104,111,111,107,95,102,
 | 
					    0,0,0,218,24,112,97,116,104,95,104,111,111,107,95,102,
 | 
				
			||||||
    111,114,95,70,105,108,101,70,105,110,100,101,114,80,6,0,
 | 
					    111,114,95,70,105,108,101,70,105,110,100,101,114,81,6,0,
 | 
				
			||||||
    0,115,8,0,0,0,8,2,12,1,16,1,255,128,122,54,
 | 
					    0,115,8,0,0,0,8,2,12,1,16,1,255,128,122,54,
 | 
				
			||||||
    70,105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,
 | 
					    70,105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,
 | 
				
			||||||
    104,111,111,107,46,60,108,111,99,97,108,115,62,46,112,97,
 | 
					    104,111,111,107,46,60,108,111,99,97,108,115,62,46,112,97,
 | 
				
			||||||
| 
						 | 
					@ -2641,7 +2641,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    70,105,110,100,101,114,78,114,7,0,0,0,41,3,114,221,
 | 
					    70,105,110,100,101,114,78,114,7,0,0,0,41,3,114,221,
 | 
				
			||||||
    0,0,0,114,101,1,0,0,114,107,1,0,0,114,7,0,
 | 
					    0,0,0,114,101,1,0,0,114,107,1,0,0,114,7,0,
 | 
				
			||||||
    0,0,114,106,1,0,0,114,8,0,0,0,218,9,112,97,
 | 
					    0,0,114,106,1,0,0,114,8,0,0,0,218,9,112,97,
 | 
				
			||||||
    116,104,95,104,111,111,107,70,6,0,0,115,6,0,0,0,
 | 
					    116,104,95,104,111,111,107,71,6,0,0,115,6,0,0,0,
 | 
				
			||||||
    14,10,4,6,255,128,122,20,70,105,108,101,70,105,110,100,
 | 
					    14,10,4,6,255,128,122,20,70,105,108,101,70,105,110,100,
 | 
				
			||||||
    101,114,46,112,97,116,104,95,104,111,111,107,99,1,0,0,
 | 
					    101,114,46,112,97,116,104,95,104,111,111,107,99,1,0,0,
 | 
				
			||||||
    0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,
 | 
					    0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2649,7 +2649,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    105,108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,
 | 
					    105,108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,
 | 
				
			||||||
    2,114,89,0,0,0,114,65,0,0,0,114,21,1,0,0,
 | 
					    2,114,89,0,0,0,114,65,0,0,0,114,21,1,0,0,
 | 
				
			||||||
    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
					    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
 | 
				
			||||||
    68,1,0,0,88,6,0,0,114,61,1,0,0,122,19,70,
 | 
					    68,1,0,0,89,6,0,0,114,61,1,0,0,122,19,70,
 | 
				
			||||||
    105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114,
 | 
					    105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114,
 | 
				
			||||||
    95,95,114,69,0,0,0,41,15,114,150,0,0,0,114,149,
 | 
					    95,95,114,69,0,0,0,41,15,114,150,0,0,0,114,149,
 | 
				
			||||||
    0,0,0,114,151,0,0,0,114,152,0,0,0,114,236,0,
 | 
					    0,0,0,114,151,0,0,0,114,152,0,0,0,114,236,0,
 | 
				
			||||||
| 
						 | 
					@ -2657,7 +2657,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,114,161,0,0,0,114,91,1,0,0,114,226,0,0,0,
 | 
					    0,114,161,0,0,0,114,91,1,0,0,114,226,0,0,0,
 | 
				
			||||||
    114,102,1,0,0,114,234,0,0,0,114,108,1,0,0,114,
 | 
					    114,102,1,0,0,114,234,0,0,0,114,108,1,0,0,114,
 | 
				
			||||||
    68,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7,
 | 
					    68,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,114,94,1,0,0,193,5,0,
 | 
					    0,0,0,114,8,0,0,0,114,94,1,0,0,194,5,0,
 | 
				
			||||||
    0,115,26,0,0,0,8,0,4,2,8,7,8,16,4,4,
 | 
					    0,115,26,0,0,0,8,0,4,2,8,7,8,16,4,4,
 | 
				
			||||||
    8,2,8,15,10,5,8,51,2,31,10,1,12,17,255,128,
 | 
					    8,2,8,15,10,5,8,51,2,31,10,1,12,17,255,128,
 | 
				
			||||||
    114,94,1,0,0,99,4,0,0,0,0,0,0,0,0,0,
 | 
					    114,94,1,0,0,99,4,0,0,0,0,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2681,7 +2681,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    109,101,90,9,99,112,97,116,104,110,97,109,101,114,164,0,
 | 
					    109,101,90,9,99,112,97,116,104,110,97,109,101,114,164,0,
 | 
				
			||||||
    0,0,114,210,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
					    0,0,114,210,0,0,0,114,7,0,0,0,114,7,0,0,
 | 
				
			||||||
    0,114,8,0,0,0,218,14,95,102,105,120,95,117,112,95,
 | 
					    0,114,8,0,0,0,218,14,95,102,105,120,95,117,112,95,
 | 
				
			||||||
    109,111,100,117,108,101,94,6,0,0,115,38,0,0,0,10,
 | 
					    109,111,100,117,108,101,95,6,0,0,115,38,0,0,0,10,
 | 
				
			||||||
    2,10,1,4,1,4,1,8,1,8,1,12,1,10,2,4,
 | 
					    2,10,1,4,1,4,1,8,1,8,1,12,1,10,2,4,
 | 
				
			||||||
    1,14,1,2,1,8,1,8,1,8,1,14,1,12,1,6,
 | 
					    1,14,1,2,1,8,1,8,1,8,1,14,1,12,1,6,
 | 
				
			||||||
    2,2,254,255,128,114,113,1,0,0,99,0,0,0,0,0,
 | 
					    2,2,254,255,128,114,113,1,0,0,99,0,0,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2701,7 +2701,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    0,114,113,0,0,0,41,3,90,10,101,120,116,101,110,115,
 | 
					    0,114,113,0,0,0,41,3,90,10,101,120,116,101,110,115,
 | 
				
			||||||
    105,111,110,115,90,6,115,111,117,114,99,101,90,8,98,121,
 | 
					    105,111,110,115,90,6,115,111,117,114,99,101,90,8,98,121,
 | 
				
			||||||
    116,101,99,111,100,101,114,7,0,0,0,114,7,0,0,0,
 | 
					    116,101,99,111,100,101,114,7,0,0,0,114,7,0,0,0,
 | 
				
			||||||
    114,8,0,0,0,114,208,0,0,0,117,6,0,0,115,10,
 | 
					    114,8,0,0,0,114,208,0,0,0,118,6,0,0,115,10,
 | 
				
			||||||
    0,0,0,12,5,8,1,8,1,10,1,255,128,114,208,0,
 | 
					    0,0,0,12,5,8,1,8,1,10,1,255,128,114,208,0,
 | 
				
			||||||
    0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,
 | 
					    0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,
 | 
				
			||||||
    0,0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,
 | 
					    0,0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2709,7 +2709,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    159,0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,
 | 
					    159,0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,
 | 
				
			||||||
    97,112,95,109,111,100,117,108,101,114,7,0,0,0,114,7,
 | 
					    97,112,95,109,111,100,117,108,101,114,7,0,0,0,114,7,
 | 
				
			||||||
    0,0,0,114,8,0,0,0,218,21,95,115,101,116,95,98,
 | 
					    0,0,0,114,8,0,0,0,218,21,95,115,101,116,95,98,
 | 
				
			||||||
    111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,128,
 | 
					    111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,129,
 | 
				
			||||||
    6,0,0,115,4,0,0,0,8,2,255,128,114,116,1,0,
 | 
					    6,0,0,115,4,0,0,0,8,2,255,128,114,116,1,0,
 | 
				
			||||||
    0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,
 | 
					    0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,
 | 
				
			||||||
    0,0,4,0,0,0,67,0,0,0,115,50,0,0,0,116,
 | 
					    0,0,4,0,0,0,67,0,0,0,115,50,0,0,0,116,
 | 
				
			||||||
| 
						 | 
					@ -2725,7 +2725,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    61,0,0,0,114,77,1,0,0,41,2,114,115,1,0,0,
 | 
					    61,0,0,0,114,77,1,0,0,41,2,114,115,1,0,0,
 | 
				
			||||||
    90,17,115,117,112,112,111,114,116,101,100,95,108,111,97,100,
 | 
					    90,17,115,117,112,112,111,114,116,101,100,95,108,111,97,100,
 | 
				
			||||||
    101,114,115,114,7,0,0,0,114,7,0,0,0,114,8,0,
 | 
					    101,114,115,114,7,0,0,0,114,7,0,0,0,114,8,0,
 | 
				
			||||||
    0,0,218,8,95,105,110,115,116,97,108,108,133,6,0,0,
 | 
					    0,0,218,8,95,105,110,115,116,97,108,108,134,6,0,0,
 | 
				
			||||||
    115,10,0,0,0,8,2,6,1,20,1,16,1,255,128,114,
 | 
					    115,10,0,0,0,8,2,6,1,20,1,16,1,255,128,114,
 | 
				
			||||||
    118,1,0,0,41,1,114,87,0,0,0,114,69,0,0,0,
 | 
					    118,1,0,0,41,1,114,87,0,0,0,114,69,0,0,0,
 | 
				
			||||||
    41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0,
 | 
					    41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0,
 | 
				
			||||||
| 
						 | 
					@ -2770,7 +2770,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
 | 
				
			||||||
    1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4,
 | 
					    1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4,
 | 
				
			||||||
    255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8,
 | 
					    255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8,
 | 
				
			||||||
    30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8,
 | 
					    30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8,
 | 
				
			||||||
    8,10,5,10,22,0,127,16,27,12,1,4,2,4,1,6,
 | 
					    8,10,5,10,22,0,127,16,28,12,1,4,2,4,1,6,
 | 
				
			||||||
    2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8,
 | 
					    2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8,
 | 
				
			||||||
    40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10,
 | 
					    40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10,
 | 
				
			||||||
    24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14,
 | 
					    24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
# @generated by pegen from ./Tools/peg_generator/pegen/metagrammar.gram
 | 
					# @generated by pegen from ./Tools/peg_generator/pegen/metagrammar.gram
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import ast
 | 
					import ast
 | 
				
			||||||
from typing import Optional
 | 
					from typing import Optional, Any
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pegen.parser import memoize, memoize_left_rec, logger, Parser
 | 
					from pegen.parser import memoize, memoize_left_rec, logger, Parser
 | 
				
			||||||
from ast import literal_eval
 | 
					from ast import literal_eval
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@
 | 
				
			||||||
# @generated by pegen from {filename}
 | 
					# @generated by pegen from {filename}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import ast
 | 
					import ast
 | 
				
			||||||
from typing import Optional
 | 
					from typing import Optional, Any
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pegen.parser import memoize, memoize_left_rec, logger, Parser
 | 
					from pegen.parser import memoize, memoize_left_rec, logger, Parser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue